sqlite3.Connection有一个
row_factory属性。
该文档指出:
您可以将此属性更改为可调用的可调用对象,该对象将光标和原始行作为元组接受,并将返回实际结果行。这样,您可以实现更高级的返回结果的方式,例如返回还可以通过名称访问列的对象。
要从中返回单个值列表
SELECt,例如
id,您可以分配一个lambda,
row_factory以返回每行中的第一个索引值;例如:
import sqlite3 as dbconn = db.connect('my.db')conn.row_factory = lambda cursor, row: row[0]c = conn.cursor()ids = c.execute('SELECT id FROM users').fetchall()
这样会产生类似:
[1, 2, 3, 4, 5, 6] # etc.
您也可以
row_factory直接在光标对象本身上设置。实际上,如果 在 创建游标 之前 未
row_factory在连接上设置on ,则
必须 在游标上设置on:
row_factory
c = conn.cursor()c.row_factory = lambda cursor, row: {'foo': row[0]}
您可以
row_factory在游标对象的生存期内随时重新定义,并且可以 取消设置 行工厂
None以返回基于默认元组的结果:
c.row_factory = Nonec.execute('SELECt id FROM users').fetchall() # [(1,), (2,), (3,)] etc.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)