0

通过快速搜索,我得到了2004 年 1 月的 Parrot DBDI 公告和一个似乎早已死去的dbdi-dev 邮件列表。Parrot DBDI 还在开发中吗?有人在为 Parrot 开发不同的数据库 API 或接口吗?

4

2 回答 2

1

来自DBI::Roadmap 1.607手册,日期为 2004 年 11 月:

大部分工作将把 DBI C 和 Perl 基类代码翻译成 Parrot PIR,或生成 PIR 的合适语言。由于 Parrot 当时没有关键功能,该项目停滞不前。问题已解决,但项目尚未重新启动。

达伦·邓肯在 2005 年 5 月发表的这篇文章

我相信它现在很快就会重新开始。看,一些主要缺失的先决条件现在都上线了,所以有了这些,我们就可以开始工作了。

我找不到比这更近的东西了。Parrot 本身的进展有点缓慢,所以也许为了与 Parrot 平台保持兼容,DBDI 也是如此。:-)

于 2008-11-21T22:53:03.387 回答
1

DBDI 致力于创建一个数据库驱动程序接口,就像当前的 DBI 和 DBD 模块一样。它死了,所以开发人员现在改用现有的接口——Java JDBI。两个这样的开发者是 Tim Bunce(他曾参与 DBI 1,但没有太多时间参与其续集)和 Simon Cozens:

http://perlbuzz.com/2008/12/database-access-in-perl-6-is-coming-along-nicely.html

use DBDI;
my $conn = DBDI::DriverManager.getConnection(
    "dbdi:SQLite3:test.db", "", "");
my $stm = $conn.createStatement();
my $rs = $stm.executeUpdate("CREATE TABLE foo (bar, baz)");
my $stm = $conn.prepareStatement(
    "    INSERT INTO foo (bar, baz) VALUES (?, ?)");
$stm.setColumn(1, 123);
$stm.setColumn(2, "Thingy");
$stm.executeUpdate();

这个模块应该适用于所有 Parrot 语言,而不仅仅是 Perl 6。


实际上,对于 Perl 6,我们可能会看到一个 SQL 引用运算符,因此您可以执行以下操作:

$conn.prepareStatement( Q:sql<INSERT INTO foo (bar, baz) VALUES($bar, $baz)> );

当然,在 Perl 6 中,像 Q:sql 这样的引号修饰符可以缩写,例如 qs<> 或 sql<>

于 2009-03-10T14:13:59.993 回答