[英]Trying to insert NULL with None as '?' placeholder not working for sqlite3 for Python
我正在使用使用sqlite3 for Python的數據庫來存儲地址。 我了解您使用?
作為占位符,您可以為execute
方法提供元組或值列表以填充占位符。 我也知道, None
應該對應於sqlite的NULL
值。
但是,如果我嘗試像這樣從表中進行SELECT
,即使該條目確實存在於表中,它也不會獲取任何值:
cursor.execute('SELECT * FROM test WHERE (address, apartment, city, state) = (?, ?, ?, ?);',
('123 Front St', None, 'Springfield', 'WA'))
但是,如果單元格不是NULL
值,而我給它提供了一個常規的舊字符串作為單元格,它將很好地獲取它。
我究竟做錯了什么?
您可以將查詢重寫為NULL
安全:
-- ISO-standard
SELECT *
FROM test
WHERE address IS NOT DISTINCT FROM ?
AND apartment IS NOT DISTINCT FROM ?
AND city IS NOT DISTINCT FROM ?
AND state US NOT DISTINCT FROM ?;
-- SQLite
SELECT *
FROM test
WHERE (address = ? OR ? IS NULL)
AND (apartment = ? OR ? IS NULL)
...
在SQL世界中, col = NULL
產生Unknown,與true不同。 相關: 什么是“ = null”和“ IS NULL”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.