Я хотел бы найти строки, которые удовлетворяют определенным условиям со своими значениями. Значения и, следовательно, параметры для фильтрации могут быть действительными числами или NULL
.
В качестве примера рассмотрим следующую базу данных:
import sqlite3
conn = sqlite3.connect(":memory:")
c = conn.cursor()
c.executescript("CREATE TABLE tab (value INTEGER); INSERT INTO tab VALUES (NULL), (42);")
Теперь я ищу вариант подстановки параметров, который может обрабатывать NULL
, а также не NULL
значения.
print(c.execute("SELECT * FROM tab WHERE value=?", (42,)).fetchall())
--> [(42,)]
print(c.execute("SELECT * FROM tab WHERE value=?", (None,)).fetchall())
--> []
Как видно, последний не работает. Нужно ли проверять значения для None
для всех параметров, которые я использую для фильтрации, чтобы использовать синтаксис IS NULL
?
print(c.execute("SELECT * FROM tab WHERE value IS NULL").fetchall())
--> [(None,)]