我的python代碼:
datefilter="2022-01-11"
if condition:
sql="SELECT * FROM TABLE;"
else:
sql="SELECT * FROM TABLE WHERE DATE = ?;"
curs.execute(sql,(datefilter,))
條件為真時出現的錯誤:
sqlite3.ProgrammingError:提供的系結數量不正確。當前陳述句使用 0,并且提供了 1。
有沒有辦法在不將其用于 sql 查詢的情況下“使用”此引數?
我已經嘗試了以下方法,但它不起作用:
sql="SELECT * FROM TABLE; -- ?"
uj5u.com熱心網友回復:
任何不計算為 的非空運算式0(被解釋為false用作布爾運算式時)都可以在您希望計算為 的任何地方使用true。
這個查詢:
SELECT * FROM TABLE;
相當于:
SELECT * FROM TABLE WHERE '2022-01-11'; -- yes, this is valid in SQLite
因為'2022-01-11'被隱式轉換為非零數值(=2022是 的起始數字部分'2022-01-11'),所以它被解釋為true,使得查詢等效于:
SELECT * FROM TABLE WHERE TRUE;
對于您的情況,假設您傳遞的引數是日期,以便true在使用時始終轉換為如上所述,您可以撰寫如下代碼:
datefilter="2022-01-11"
if condition:
sql="SELECT * FROM TABLE WHERE ?;"
else:
sql="SELECT * FROM TABLE WHERE DATE = ?;"
curs.execute(sql,(datefilter,))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410110.html
標籤:
上一篇:小數點后替換SQL
下一篇:在組sql中過濾結果
