我想漂亮地打印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/

10-08 23:59