【问题标题】:Is there an ORM for Perl?Perl 有 ORM 吗?
【发布时间】:2009-07-10 05:59:39
【问题描述】:
创建表人 ( 名称 varchar(15), attr1 varchar(15), attr2 varchar(1), attr3 字符(1), attr4 整数 )

我如何在 Perl 中使用基本的 ORM,方法是获取一个像上面这样的简单表并将其映射到 Perl 对象?接下来,我想执行基本操作,例如使用某些标准系统 Perl 语法选择结果。例如:

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

【问题讨论】:

  • DBIx::Class 为我工作。

标签: perl orm


【解决方案1】:

规则 #1,不要自己写。

CPAN 上有相当多的 ORM,包括 ...

  • DBIx::Class - 目前可能排名第一
  • Rose::DB::Object
  • Fey::ORM - 我自己的贡献,最著名的是基于 Moose,这意味着您可以在基于 ORM 的课程中​​获得 Moose 的所有功能。

【讨论】:

  • 当我看到这个时,我基本上是在发帖说同样的话。 Perl 就是重用现有代码。
  • 很高兴 Perl 有 3 种方法可以做到这一点。但是,可以支持比较和对比这3个库吗?受欢迎程度是标准之一。简单和使用时间是另一回事。
  • 这可能最好作为一个新问题。
  • 如果您告诉我们什么对您很重要,您可以更轻松地比较它们。 :)
  • 您应该编辑问题以封装您要求的其他信息
【解决方案2】:

(迟到)Data::ObjectDriver(也在 CPAN 上)提供了极大的灵活性,尤其是在分区和缓存在您的要求列表中时。

【讨论】:

    【解决方案3】:

    我会使用 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", "",""]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      相关资源
      最近更新 更多