flask sqlite3 sql 语句疑问

2017-05-29 00:34:02 +08:00
 HxSeek

这是错误提示: db.execute('insert into Comment values ?', (request.form['content'])) OperationalError: near "?": syntax error

这是执行的操作 db.execute('insert into Comment values ?', (request.form['content']))

这是数据库 create table Comment( cid integer primary key autoincrement, content string not null );

请问我究竟错在哪了?

2702 次点击
所在节点    Python
10 条回复
linnchord
2017-05-29 00:38:07 +08:00
kindjeff
2017-05-29 08:38:54 +08:00
你得这么写,'insert into TABLE values (?, ?, ?, ?)', v1, v2, v3, v4
kindjeff
2017-05-29 08:42:39 +08:00
你这个有两列就得给他两个问号填两个值,不然就要指名填哪些列。
而且最后你传入的 tuple 只有一个值的话,得加个逗号写成(value,)表示你传入了一个 tuple
tumbzzc
2017-05-29 09:24:46 +08:00
db.execute('insert into Comment values ?', (request.form['content'],))
像楼上所说,tuple 如果只有一个值,需要写成(a,)
HxSeek
2017-05-29 09:38:52 +08:00
@tumbzzc 我像你这样写也不行···
HxSeek
2017-05-29 09:40:31 +08:00
@kindjeff 第一列是主键,默认递增加 1,就不用传输吧? 现在只需要传第二列的? 但是我写出像 tumbzzc 那样也不行··
JamesMackerel
2017-05-29 10:57:09 +08:00
推荐一个 ORM。
Pony ORM。
aimoji
2017-05-29 11:46:57 +08:00
'insert into Comment values (null,?)', (request.form['content'],)
HxSeek
2017-05-29 13:34:40 +08:00
@aimoji 谢谢,但觉得一定要写成这样真是奇怪啊,可以的话我以后用 ORM 好了
kindjeff
2017-05-29 13:35:25 +08:00
@HxSeek 那你想传哪些行你也得告诉数据库啊……得写成 insert into TABLE (content) values (?)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/364516

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX