我的“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()插入,但我无法理解使用其他键是如何实现的。
答案 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))