В APSW, почему эта привязка sql не работает

Так почему это работает:

      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

использование расширенной трассировки больше не дает подсказок:

      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

Я использую лабораторию jupyter notebook на chromebook

1 ответ

Из sqlite doc

SQLite позволяет использовать параметр везде, где разрешены строковый литерал, числовая константа или NULL. (Параметры нельзя использовать для имен столбцов или таблиц.)

Другие вопросы по тегам