2008-11-11 13 views
7
 
create table person 
(
    name varchar(15), 
    attr1 varchar(15), 
    attr2 varchar(1), 
    attr3 char(1), 
    attr4 int 
) 

¿Cómo puedo usar ORM básico en Perl tomando una tabla simple como la anterior y asignándola a objetos Perl? A continuación me gustaría realizar operaciones básicas como seleccionar resultados usando algún sistema de sistema Perl como la sintaxis. eg .:¿Hay un ORM para Perl?

@myResults = findAll(attr1 == 3 && attr2 =~ /abc/); 
+0

DBIx :: La clase funcionó para mí. – yogman

Respuesta

26

Regla # 1, no escriba la suya.

Hay un buen número de ORM en CPAN, incluyendo ...

  • DBIx::Class - probablemente # 1 en popularidad en el momento
  • Rose::DB::Object
  • Fey::ORM - mi propia contribución, más notable por siendo Moose -based, lo que significa que obtienes todo el poder de Moose en tus clases basadas en ORM.
+0

Básicamente estaba publicando para decir lo mismo cuando vi esto. Perl se trata de reutilizar el código existente. – glenatron

+0

Es bueno que Perl tenga 3 formas de hacerlo. Sin embargo, ¿puede admitir comparar y contrastar las 3 bibliotecas? La popularidad es un criterio. La simplicidad y el tiempo para usar es otro. –

+0

esto probablemente sea mejor como una nueva pregunta propia. –

0

(Chiming late) Datos :: ObjectDriver (también en CPAN) proporciona una gran flexibilidad, especialmente si el particionamiento y el almacenamiento en caché se encuentran en la lista de sus requisitos.

0

De las sugerencias que usaría DBIx :: Class. Aquí hay un código para introspectar una base de datos heredada de 50 tablas (con las relaciones especificadas en el esquema):

#!/usr/bin/perl 
use warnings; 
use strict; 
use DBIx::Class::Schema::Loader qw/ make_schema_at /; 

make_schema_at("Zotero::Schema", 
       { 
        # components => ['InflateColumn::DateTime'], 
        debug => 1, 
        relationships => 1, 
        dump_directory => './lib' , 
       }, 
       ["dbi:SQLite:dbname=../zotero.sqlite", "",""]); 
Cuestiones relacionadas