您可以遍历行(result cursor is iterable)、unpack 键和值,然后使用 dict comprehension 组合结果:
desired_dict = {k:v for k, v in c.execute('SELECT id, name FROM MyTable')}
我喜欢使用 dict 理解,因为我可以在添加到字典之前对结果进行额外处理(例如更改大小写、转换为十进制或日期时间等)。
也就是说,如果你想直接进入 dict,ozgur 有更短、更快的方法,即直接调用 dict():
desired_dict = dict(c.execute('SELECT id, name FROM MyTable'))
这是一个实际的示例会话,演示了从开始到结束的过程:
>>> import sqlite3
>>> c = sqlite3.connect('tmp.db')
>>> c.execute('CREATE TABLE MyTable (id text, name text)')
<sqlite3.Cursor object at 0x106227f80>
>>> c.execute("INSERT INTO MyTable VALUES ('abc', 'Alpha')")
<sqlite3.Cursor object at 0x106283810>
>>> c.execute("INSERT INTO MyTable VALUES ('def', 'Beta')")
<sqlite3.Cursor object at 0x106227f80>
>>> c.execute("INSERT INTO MyTable VALUES ('ghi', 'Gamma')")
<sqlite3.Cursor object at 0x106283810>
>>> c.commit()
>>> c.close()
>>>
>>> c = sqlite3.connect('tmp.db')
>>> {k:v for k, v in c.execute('SELECT id, name FROM MyTable')}
{'ghi': 'Gamma', 'def': 'Beta', 'abc': 'Alpha'}