我是DBIx::Class的新手。我用它作为API从我的数据库中重新运行数据,我想用DBIC重新创建一个SELECT*from表。对于DBI,它对我很有效
返回数据“漂亮”的最佳方法是什么
我想以哈希数组的形式返回数据,如:
[
{
id => 123,
name => 'name',
....
}
]
但是使用my@rs=$schema-
$VAR1 = bless( {
'_column_data' => {
'name' => 'test',
'id' => 123'
},
'_result_source' => $VAR1->{'_result_source'},
'_in_storage' => 1
}, 'DB::Schema::Result::Product' );
我肯定我误解了DBIC的概念。
我怎么能只得到所有科伦的数据?谢谢大家的帮助!
my @rs = map {$_->_column_data} $schema->resultset('Product')->all
? 这就是说,按照惯例,带前导下划线的字段是“私有”字段,很可能没有文档记录或文档不足,或者在未来的实现中可能会在不通知的情况下更改,您应该警惕直接访问它们。
由于DBIx::Class
的目的是将数据库行转换为对象,因此应该将结果集视为对象数组。要将其向下转换为适合与Data::Dumper
一起使用的哈希,可以执行以下操作:
my @rs = map { { name => $_->name, id => $_->id } } $schema->resultset('Product')->all
我认为最简单的方法就是get_inflated_columns方法。
map {{$_->get_inflated_columns}} $rs->all
考虑使用数据::转储,如果你真的想要漂亮的东西,数据::打印机。
数据:转储程序只是泄漏了数据结构的内部。这就是DB::Schema::Result::Product对象的核心,它代表产品表的一行。
如果你想从一个对象获得漂亮的输出,你需要向该对象索取。可以对它们调用DBIx::Class::Row方法。如果只需要对象中的行数据,请使用get_columns
或get_columns
。它们返回一个散列,所以你需要引用。
my @rows = map { my %h = $_->get_columns; \%h } @rs;
DBIx::Class 是一个Perl语言的数据库对象映射框架
我有一个DBIx::Class查询,需要太长时间才能完成。 以下所有SQL都是由DBIx::Class生成的。 第一个场景(DBIx简单选择): DBIx查询时间:0.390221s(正常) 第二种场景(使用where的DBIx简单选择): DBIx查询时间:29.27025s!!:( 第三种场景(使用pgadmin3运行上述查询): pgadmin查询时间:25ms(ok) 相同的查询是相当快使
通常SQLite的排序规则区分大小写。所有大写字母都在小写字母之前。但是可以在子句中告诉SQLite忽略这一点,方法是: 但是我们如何使用DBIx::Class来实现这一点呢? 考虑下面的示例,它将一个SQLite数据库部署到内存中,表中包含“代码> Foo”和“一个目录<代码>栏<代码>。连接使用设置。它填充值,然后使用结果集上的将它们取出来。我将在以下所有示例中使用此设置。您需要DBIx::C
问题内容: 说我有一些Java代码: 还有一些代码可以加载: 能永远?为什么/为什么不呢?如果是这样,在什么情况下? 问题答案: 根据此方法javadoc: 返回该类的类加载器。一些实现可能使用null来表示引导类加载器。如果此类是由bootstrap类加载器加载的,则此方法在此类实现中将返回null。
问题内容: 我正在使用Bottle编写一个API ,到目前为止,一切都很棒。但是,在尝试返回JSON数组时遇到了一个小障碍。这是我的测试应用程序代码: 当我运行它并请求每条路线时,我会从前两条路线得到我期望的JSON响应: /单 / containsarray 因此,我曾期望返回一个字典列表来创建以下JSON响应: 但是,请求路线只会导致错误。我在做什么错,如何以这种方式返回JSON数组? 问题答
connect_info文档: 连接信息 这个方法通常由DBIx::Class::Schema中的“connection”调用,它在将参数列表传递到这里之前将其封装在arrayref中。 参数列表可能包含: > 在DBI中通常传递给“连接”的相同的4元素参数集,可选地后面跟着DBIx::Class识别的额外属性: 一个单独的代码引用,返回一个连接的DBI数据库句柄,可选地后跟DBIx::Class