我想像这样漂亮地打印DBIx :: Class :: ResultSet结果:
my $schema = MyDatabase::Main->connect('dbi:SQLite:db/example.db');
my $rs = $schema->resultset('Track')->all()
# then print $rs with all of those feilds
我找到了DBIx :: SQLCrosstab :: Format类,但它似乎只适用于自己的查询。
答案 0 :(得分:4)
我不知道任何DBIC 漂亮的打印模块,但它很容易在CPAN上的任何文本,html或其他类型的表格输出模块中实现。
以下是使用Text::Table
use 5.012;
use warnings;
use List::MoreUtils 'zip';
use Text::Table;
# my database with Album schema from DBIx::Class::Manual::Intro
use MySchema;
my $db = MySchema->connect( "DBI:SQLite:myschema_db" );
my $album = $db->resultset( 'Album' );
# get column names for the Album table
my @cols = $album->result_source->columns;
# create header with these column names
my $table = Text::Table->new( header( @cols ) );
# add each Album row to table output
while (my $cd = $album->next) {
$table->add( map { $cd->get_column( $_ ) } @cols );
}
print $table; # => tabular text output
# adds | separator between header labels
sub header {
my @sep = (\' | ') x @_;
zip @_, @sep;
}
这将输出以下测试数据:
albumid | artist | title | rank |
1 | Lou Reed | Transformer | |
2 | Lou Reed | Berlin | |
3 | David Bowie | Ziggy Stardust | |
4 | Japan | Tin Drum | |
/ I3az /
答案 1 :(得分:2)
如果您正在寻找真正漂亮的输出,请使用上面的draegtun示例。但是,如果您真的只想在不使用所有源数据的情况下使用Data :: Dumper吐出DBIx :: Class :: Row对象,则可以将此挂钩添加到结果类中(或者更好地将其添加到基本结果中)所有架构结果的类)
sub _dumper_hook {
$_[0] = bless { %{ $_[0] }, _source_handle=>undef }, ref($_[0]);
}
$Data::Dumper::Freezer = '_dumper_hook';