Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Penyatuan Koneksi Perl

Saya tidak memiliki pengalaman dengan DBIx::Connection, tetapi saya menggunakan DBIx::Connector (pada dasarnya apa yang DBIx::Class gunakan secara internal, tetapi sebaris) dan itu luar biasa...

Saya menggabungkan koneksi ini dengan pembungkus objek Moose yang mengembalikan instance objek yang ada jika parameter koneksi identik (ini akan berfungsi sama untuk objek DB yang mendasarinya):

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. Bagaimana cara menghapus item dari tabel secara rekursif?

  2. Tidak dapat terhubung ke server MySQL di (ip atau nama domain)

  3. Menggunakan MySQL dengan Django - Akses ditolak untuk pengguna '@'localhost

  4. JSON_EXTRACT() – Mengembalikan Data dari Dokumen JSON di MySQL

  5. Cara Mendapatkan Jumlah Hari dalam Sebulan di MySQL