带WHERE子句的INSERT语句无法运行:Python+SQLite3技术求助
解决SQLite INSERT语句语法错误的问题
嘿,你的问题出在把两种INSERT语法混在一起用啦!SQLite里的INSERT有两种常用写法,但不能像你那样把它们拼接起来,这就是为什么会报syntax error near "select"的原因。
先理清楚你要实现的两种场景:
场景1:把查询到的已有评论插入到表中
如果你是想从tableforimagedata里取出id=idd的那条记录的review值,再插入到同一个表的新记录里,应该用INSERT ... SELECT的语法,不需要VALUES:
c.execute('INSERT INTO tableforimagedata (review) SELECT review FROM tableforimagedata WHERE id = ?', (idd,))
这里注意:括号里只需要传idd一个参数,因为SELECT语句已经帮你获取了要插入的值。
场景2:直接插入变量n1作为新评论
如果你的需求是把用户输入的n1作为新评论插入表中,那用INSERT ... VALUES就够了,不需要嵌套SELECT:
c.execute('INSERT INTO tableforimagedata (review) VALUES (?)', (n1,))
为什么你的原语句报错?
你写的insert into tableforimagedata(select review from tableforimagedata where id=?) values(?)是错误的语法——SQLite不允许在INSERT的表名后面直接跟SELECT,再加上VALUES。这两种语法是互斥的,只能选一种来用。
内容的提问来源于stack exchange,提问作者ayush dhiman
相关产品推荐
相关产品推荐

