Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tổng hợp kết nối Perl

Tôi không có bất kỳ kinh nghiệm nào với DBIx ::Connection, nhưng tôi sử dụng DBIx ::Connector (về cơ bản là những gì DBIx ::Class sử dụng bên trong, nhưng được đặt trong dòng) và nó thật tuyệt vời ...

Tôi gộp các kết nối này với một trình bao bọc đối tượng Moose để xử lý các cá thể đối tượng hiện có nếu các tham số kết nối giống hệt nhau (điều này sẽ hoạt động giống nhau đối với bất kỳ đối tượng DB cơ bản nào):

Gói
package MyApp::Factory::DatabaseConnection;
use strict;
use warnings;

use Moose;

# table of database name -> connection objects
has connection_pool => (
    is => 'ro', isa => 'HashRef[DBIx::Connector]',
    traits  => ['Hash'],
    handles => {
        has_pooled_connection => 'exists',
        get_pooled_connection => 'get',
        save_pooled_connection => 'set',
    },
    default => sub { {} },
);

sub get_connection
{
    my ($self, %options) = @_;

    # some application-specific parsing of %options here...

    my $obj;
    if ($options{reuse})
    {
        # extract the last-allocated connection for this database and pass it
        # back, if there is one.
        $obj = $self->get_pooled_connection($options{database});
    }

    if (not $obj or not $obj->connected)
    {
        # look up connection info based on requested database name
        my ($dsn, $username, $password) = $self->get_connection_info($options{database});
        $obj = DBIx::Connector->new($dsn, $username, $password);

        return unless $obj;

        # Save this connection for later reuse, possibly replacing an earlier
        # saved connection (this latest one has the highest chance of being in
        # the same pid as a subsequent request).
        $self->save_pooled_connection($options{database}, $obj) unless $options{nosave};
    }

    return $obj;
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khớp dấu '%' khi tìm kiếm trong cơ sở dữ liệu MySQL

  2. câu lệnh mysql min where

  3. Không có gói msyql-server nào khả dụng

  4. SubSonic 3 và MySQL, xóa dấu gạch dưới khỏi tên cột trong phương thức CleanUp () gây ra ngoại lệ khi sử dụng thuộc tính trong truy vấn linq

  5. PHP / MySQL - Cách tốt nhất để tạo chuỗi ngẫu nhiên duy nhất?