gpt4 book ai didi

python - 在apsw上复现pysqlite的row_factory

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:50 24 4
gpt4 key购买 nike

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

这是我的原始代码:

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

我这样使用它:

query = """ SELECT wbcode, Year, """+query_name+""" 
FROM innovotable WHERE commodity='"""+commodity_name+"""' and
"""+query_name+""" != 'NULL' """
rows = cursor.execute(query)
for row in rows:
s[str(row[0])+str(row[1])] = float(row[2])

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

最佳答案

披露:我是 APSW 的作者

是的,很容易。 APSW 在 http://apidoc.apsw.googlecode.com/hg/execution.html#tracing 中记录了一种称为行跟踪器的东西

每行都会调用行跟踪器。您可以通过返回 None 来完全跳过该行,或者根据传入的内容创建您想要的任何数据类型(这非常适合测试)。如果行跟踪器安装在连接上,那么它会影响所有游标。如果在游标上,则只有该游标会受到影响。 Cursor.getdescription 将使您获得列名和声明的类型。

您上面的代码实际上并没有使用 row_factory,因为您按数字索引行,这在 pysqlite 和 APSW 中是一样的。 sqlite3.Row 确实允许您按名称进行索引,因此最后一行代码是:

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

顺便说一句,还有一个由 py​​sqlite 作者和我自己运行的 Python SQLite 组,链接到 pysqlite 和 APSW 站点。

关于python - 在apsw上复现pysqlite的row_factory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com