[英]python 3.6, sqlite OperationalError: near "to": syntax error
[英]Syntax error in SQL statement: UPDATE for Python 3.6
我正在嘗試使用以下命令來更新H2數據庫的書本表的列鍵 (通過JayDeBeApi):
sqlCommand = "UPDATE book SET keys = %s WHERE keys IS NULL AND id = %d"
val = (keyWords, idBook)
mydb.execute(sqlCommand, val)
keyWords是字符串類型,而idBook是int類型。 該表具有更多列(但這些是相關的列),並使用Spring-Boot生成:
@Id
private Integer id;
@Column(columnDefinition="varchar(5000)")
private String keys;
但我收到此錯誤:
Traceback (most recent call last):
File "init.py", line 43, in <module>
sql.execute(sqlCommand, val)
File "C:\Users\Us\AppData\Local\Programs\Python\Python36-32\lib\site-packages\jaydebeapi\__init__.py", line 498, in execute
self._prep = self._connection.jconn.prepareStatement(operation)
jpype._jexception.JdbcSQLExceptionPyRaisable: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "UPDATE BOOK SET KEYS = %[*]S WHERE KEYS IS NULL AND ID = %D "; expected "DEFAULT, NOT, EXISTS, INTERSECTS, SELECT, FROM, WITH"; SQL statement:
UPDATE book SET keys = %s WHERE keys IS NULL AND id = %d [42001-197]
我看到問題是由格式類型引起的,但是我絕對不知道如何解決它。
任何幫助表示贊賞。
從文檔(實際上是一個錯誤的問題要堅持Python的PEP 249標准),它出現在JayDeBe API使用qmarks, ?
,用於類似於大多數JDBC連接的參數占位符。
因此,必須在准備好的語句中為所有參數值使用這些占位符,而不能按類型(即數字,字符串,日期)進行區分。 數據庫負責類型轉換。
sqlCommand = "UPDATE book SET keys = ? WHERE keys IS NULL AND id = ?"
val = (keyWords, idBook)
mydb.execute(sqlCommand, val)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.