使用 SQLite3,如何在一個請求中使用多個變數?使用一個有效,但是一旦添加第二個,它就會給您下面的語法錯誤。我已嘗試對此進行研究,但在相同情況下找不到任何檔案/其他問題。
代碼:
self.db.execute("INSERT INTO complements (:record) VALUES (:field)", {"record": record, "field": field})
錯誤:
|Traceback (most recent call last):
File "(path)", line 22, in <module>
db.add("Adjective", "adjective")
File "(path)", line 17, in add
self.db.execute("INSERT INTO complements (:record) VALUES (:field)", {"record": record, "field": field})
sqlite3.OperationalError: near ":record": syntax error
uj5u.com熱心網友回復:
列名(和其他識別符號,如表名)無法引數化,這就是您收到語法錯誤的原因。只有“值”(要插入的資料)可以引數化。要解決此問題,請自行格式化查詢,例如使用格式字串:
record, field = ...
self.db.execute(f"INSERT INTO complements ({record}) VALUES (:field)", {"field": field})
如果record是用戶提供的,您必須注意防止 SQL 注入,例如通過檢查它是否是有效的列名record in ["some", "column", "names"]:然而,在查詢中引數化識別符號是相當少見的,所以這感覺就像一個 XY 問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485339.html
