如何使用executemany将每个键的第一个值写入数据库

2024-09-25 16:22:14 发布

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

我是Python新手,正在尝试使用for循环来添加第一个值和后续值,通过使用游标.executemany()功能。你知道吗

这是我的密码

dict = {'yo': [1,2,3,4,5,6,7],'meh':[1,2,3,4,5,6,7],'blah':[1,2,3,4,5,6,7]}

conn = sqlite3.connect('tester.db')
cur = conn.cursor()

cur.executescript('''
DROP TABLE IF EXISTS;

CREATE TABLE Numbers (
    id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    yo  INTEGER,
    meh INTEGER,
    blah    INTEGER
);

''')

for key,val in dict.items():
    i = 0

    cur.executemany('''INSERT OR IGNORE INTO Number_game (yo,meh,blah)
    VALUES (?,?,?)''', (val(i))
    i = i+1                     
    conn.commit()

在I=I+1迭代中,我不断地得到一个语法错误。我正在尝试将所有1添加到第一行,然后添加2,依此类推。有人能告诉我我做错了什么吗?这感觉像是一个明显的错误,我无法接受。你知道吗

提前谢谢。你知道吗


Tags: 功能密码fortablevalintegerconndict
1条回答
网友
1楼 · 发布于 2024-09-25 16:22:14

executemany需要一个元组列表,每个元组包含一行,即yo中的一个元素、meh中的一个元素和blah中的一个元素。这不是.items()所提供的,因为它将在每次迭代中提供一个键以及与该键相关联的值。你知道吗

幸运的是zip()函数正好满足了您的需要:

cur.executemany('...insert...', zip(my_dict['yo'], my_dict['meh'], my_dict['blah']))

相关问题 更多 >