- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试从 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])
顺便说一句,还有一个由 pysqlite 作者和我自己运行的 Python SQLite 组,链接到 pysqlite 和 APSW 站点。
关于python - 在apsw上复现pysqlite的row_factory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835018/
不知何故,文档对我来说不是很清楚。我无法理解 sqlite3 Connection 对象的 row_factory 方法的用途。 基本上,您能解释一下以下片段吗? def connect_db():
我在 Python 中使用 sqlite3,想知道是否有一种方法可以使用 Python 类在同一个数据库表的 Cursor 对象和 Row 对象之间进行选择。 换句话说,我可以做这样的事情吗: cla
我是一名优秀的程序员,十分优秀!