Python中Flask使用SQLite3时遇到的SQL语句疑问

这是错误提示: 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 );

请问我究竟错在哪了?


Python中Flask使用SQLite3时遇到的SQL语句疑问

11 回复

我无法理解你的问题

你得这么写,‘insert into TABLE values (?, ?, ?, ?)’, v1, v2, v3, v4

你这个有两列就得给他两个问号填两个值,不然就要指名填哪些列。
而且最后你传入的 tuple 只有一个值的话,得加个逗号写成(value,)表示你传入了一个 tuple

db.execute(‘insert into Comment values ?’, (request.form[‘content’],))
像楼上所说,tuple 如果只有一个值,需要写成(a,)

我像你这样写也不行···

第一列是主键,默认递增加 1,就不用传输吧? 现在只需要传第二列的? 但是我写出像 tumbzzc 那样也不行··

推荐一个 ORM。
Pony ORM。

‘insert into Comment values (null,?)’, (request.form[‘content’],)

谢谢,但觉得一定要写成这样真是奇怪啊,可以的话我以后用 ORM 好了

那你想传哪些行你也得告诉数据库啊……得写成 insert into TABLE (content) values (?)

回到顶部