在 APSW 为什么这个 sql 绑定不起作用
In APSW why does this sql binding not work
那么为什么这样做有效:
sql="""UPDATE """+stream+"""_pointer SET id = """+str(message.id)+"""; insert into """+stream+""" VALUES ("""+str(message.id)+""",'"""+safemessage+"""','pending')"""
cursor.execute(sql)
但是对于完全相同的变量,这不是:
sql="UPDATE ?_pointer SET id = ?; insert into ? VALUES (?,?,?)"
cursor.execute(sql,(stream,message.id,stream,message.id,safemessage,'pending'))
我收到的第二条有用的错误消息是:
---> 31 cursor.execute(sql,(streampointer,message.id,stream,message.id,safemessage,'pending'))
SQLError: SQLError: near "?": syntax error
使用 augmented traceback 没有提供更多线索:
File "/tmp/ipykernel_20009/643992601.py", line 31, in <module>
cursor.execute(sql,(streampointer,message.id,stream,message.id,safemessage,'pending'))
apsw.SQLError: SQLError: near "?": syntax error
我在 chromebook 上使用 jupyter notebook lab
SQLite allows a parameter wherever a string literal, numeric constant, or NULL is allowed. (Parameters may not be used for column or table names.)
那么为什么这样做有效:
sql="""UPDATE """+stream+"""_pointer SET id = """+str(message.id)+"""; insert into """+stream+""" VALUES ("""+str(message.id)+""",'"""+safemessage+"""','pending')"""
cursor.execute(sql)
但是对于完全相同的变量,这不是:
sql="UPDATE ?_pointer SET id = ?; insert into ? VALUES (?,?,?)"
cursor.execute(sql,(stream,message.id,stream,message.id,safemessage,'pending'))
我收到的第二条有用的错误消息是:
---> 31 cursor.execute(sql,(streampointer,message.id,stream,message.id,safemessage,'pending'))
SQLError: SQLError: near "?": syntax error
使用 augmented traceback 没有提供更多线索:
File "/tmp/ipykernel_20009/643992601.py", line 31, in <module>
cursor.execute(sql,(streampointer,message.id,stream,message.id,safemessage,'pending'))
apsw.SQLError: SQLError: near "?": syntax error
我在 chromebook 上使用 jupyter notebook lab
SQLite allows a parameter wherever a string literal, numeric constant, or NULL is allowed. (Parameters may not be used for column or table names.)