我想漂亮地打印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类,但它似乎仅对自己的查询有效。
最佳答案
我不知道任何DBIC pretty-print 模块,但是很容易从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/
关于perl - 我如何漂亮地打印DBIx::Class结果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4035922/