在aps上复制pysqlite的row_工厂

2024-04-27 12:35:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图从pysqlite迁移到apsw,但我做不到 找到一种方法来重现它的row_factory函数。在

这是我的原始代码:

connection = sqlite3.connect("db.db3")
connection.row_factory = sqlite3.Row
cursor = connection.cursor()

我是这样用的:

^{pr2}$

是否可以将apsw用于同样的目的?在


Tags: 方法函数代码dbfactoryconnectconnectionsqlite3
2条回答

我在以下方面取得了不错的成绩:

connection.setrowtrace(row_factory)

def row_factory(cursor, row):
    columns = [t[0] for t in cursor.getdescription()]
    return dict(zip(columns, row))

披露:我是APSW的作者

是的,很容易。APSW在http://apidoc.apsw.googlecode.com/hg/execution.html#tracing上有一个称为行跟踪器的东西

每行都调用行跟踪器。您可以通过返回None来完全跳过该行,或者根据传入的内容生成所需的任何数据类型(这对于测试非常有用)。如果行跟踪器安装在连接上,则它会影响所有游标。如果在某个光标上,则只有该光标受影响。Cursor.getdescription将允许您获取列名和声明的类型。在

上面的代码实际上并没有使用row_工厂,因为您可以按编号索引行,这在pysqlite和APSW中是一样的。sqlite3.Row允许按名称索引,因此最后一行代码为:

s[str(row.wbcode)+str(row.Year)]=float(row[query_name])

顺便说一句,还有一个pythonsqlite组,由pysqlite作者和我自己从pysqlite和APSW站点链接到。在

相关问题 更多 >