Есть ли ORM для Perl? - PullRequest
       11

Есть ли ORM для Perl?

7 голосов
/ 11 ноября 2008
create table person
(
    name varchar(15),
    attr1 varchar(15),
    attr2 varchar(1),
    attr3 char(1),
    attr4 int
)

Как я могу использовать базовый ORM в Perl, взяв простую таблицу, подобную приведенной выше, и сопоставив ее с объектами Perl? Далее я хотел бы выполнить основные операции, такие как выбор результатов, используя некоторый системный Perl-подобный синтаксис. eg.:

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

Ответы [ 3 ]

26 голосов
/ 11 ноября 2008

Правило № 1, не пишите свое.

На CPAN имеется довольно много ORM, включая ...

  • DBIx :: Class - вероятно, # 1 по популярности на данный момент
  • Rose :: DB :: Object
  • Fey :: ORM - мой собственный вклад, наиболее известный тем, что он основан на Moose , что означает, что вы получаете всю мощь Moose в своих классах на основе ORM. *
0 голосов
/ 20 марта 2009

Из предложений я бы использовал DBIx :: Class. Вот некоторый код для анализа устаревшей базы данных из 50 таблиц (со связями, указанными в схеме):

#!/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", "",""]);
0 голосов
/ 20 марта 2009

(поздний звонок) Data :: ObjectDriver (также на CPAN) обеспечивает большую гибкость, особенно если разделение и кэширование входят в список ваших требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...