从Python的sqlite3获取字段值的列表,而不是表示行的元组

从Python的sqlite3获取字段值的列表,而不是表示行的元组,第1张

从Python的sqlite3获取字段值的列表,而不是表示行的元组

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.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5655731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存