使用iteritems()将dict插入sqlite3数据库

时间:2011-04-04 14:47:34

标签: python sqlite

我的“video_episodes”表格如下:

CREATE TABLE "video_episodes" (
    "id" integer NOT NULL PRIMARY KEY,
    "dizilink_id" integer NOT NULL REFERENCES "video_dizilink" ("id"),
    "episodename" varchar(50) NOT NULL,
    "episodeurl" varchar(200) NOT NULL);

我正在尝试在dict中插入一些值:

video_links = {'a': '1', 'b': '2'}
cursor.executemany("""INSERT INTO video_episodes(dizilink_id, episodename, episodeurl) VALUES (?,?,?)""", dizilink_id, video_links.iteritems(),)
TypeError: function takes exactly 2 arguments (3 given)

如果没有dizilink_id,我可以使用iteritems()插入,但我无法理解使用其他键是如何实现的。

1 个答案:

答案 0 :(得分:0)

这与iteritems无关。

正如错误消息所示,executemany(你为什么使用很多,而不是简单的execute?)接受两个参数,你传递三个。 SQL语句的参数是单个参数,因此需要包含在元组中。

cursor.execute("""INSERT INTO video_episodes(dizilink_id, episodename, episodeurl) VALUES (?,?,?)""", (dizilink_id, video_links.iteritems()))

评论后修改好的,我想我明白你现在要做什么。您想为dizilink_id的相同值插入多个(episodename,episodeurl)值。

你不能用executemany做到这一点。您需要运行多个命令。像这样:

for name, url in video_links.iteritems():
    cursor.execute("INSERT INTO video_episodes(dizilink_id, episodename, episodeurl) "
                   " VALUES (?,?,?)", (dizilink_id, name, url))