2024-04-27 12:35:56 发布
网友
我一直试图从pysqlite迁移到apsw,但我做不到 找到一种方法来重现它的row_factory函数。在
这是我的原始代码:
connection = sqlite3.connect("db.db3") connection.row_factory = sqlite3.Row cursor = connection.cursor()
我是这样用的:
是否可以将apsw用于同样的目的?在
我在以下方面取得了不错的成绩:
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站点链接到。在
我在以下方面取得了不错的成绩:
披露:我是APSW的作者
是的,很容易。APSW在http://apidoc.apsw.googlecode.com/hg/execution.html#tracing上有一个称为行跟踪器的东西
每行都调用行跟踪器。您可以通过返回None来完全跳过该行,或者根据传入的内容生成所需的任何数据类型(这对于测试非常有用)。如果行跟踪器安装在连接上,则它会影响所有游标。如果在某个光标上,则只有该光标受影响。Cursor.getdescription将允许您获取列名和声明的类型。在
上面的代码实际上并没有使用row_工厂,因为您可以按编号索引行,这在pysqlite和APSW中是一样的。sqlite3.Row允许按名称索引,因此最后一行代码为:
顺便说一句,还有一个pythonsqlite组,由pysqlite作者和我自己从pysqlite和APSW站点链接到。在
相关问题 更多 >
编程相关推荐