Python从数据库表向字典中添加项(sqlite3)

2024-09-29 23:26:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个名为fruits的数据库表,它有3列,id(int主键)、fruits(文本)和weight(float)

^{tb1}$

如何创建字典并将所有的结果和权重作为键值对添加到字典中

import sqlite3

conn = sqlite3.connect("database.db")

sql = """SELECT fruit,weight FROM fruits"""

cursor = conn.execute(sql)
data = cursor.fetchall()

fruitweight= {}
i = 0

while(i < len(data)):
    fruitweight['<fruitname>'] = <fruitweight>
    i = i+1

Tags: 文本id数据库sqldata字典floatconn
3条回答

大概是这样的:

for row in data:
    name, weight = row
    fruitweight[name] = weight

fetchall()根据查询从数据库返回值的元组列表。上面将元组解压为两个变量

如果您想获得更多乐趣,可以使用字典理解和元组解包:

fruitweight = {name: weight for name, weight in data}

最后,execute()实际上返回一个您可以迭代的游标,因此我认为您的代码可以简化为以下内容:

import sqlite3

conn = sqlite3.connect("database.db")

sql = """SELECT fruit,weight FROM fruits"""
fruitweight = {name: weight for name, weight in conn.execute(sql)}

我不认为光标是正确的,但是 应改为使用for循环:

import sqlite3

conn = sqlite3.connect("database.db")
cur = conn.cursor()

sql = """SELECT fruit,weight FROM fruits"""

cur.execute(sql)
data = cur.fetchall()


fruitweight= {}

for i in data:
    fruitweight[i[0]] = i[1]

conn.close()

print(fruitweight)

你可以这样做:

import sqlite3

with sqlite3.connect('/Users/andy/andy') as conn:
    cursor = conn.execute('select fruit, weight from fruits')
    D = dict()
    for row in cursor.fetchall():
        D[row[0]] = row[1]
    print(D)

相关问题 更多 >

    热门问题