VALUES(?) как работает в Sqlite3/Python?
Не могу разобраться как использовать переменные в запросах к БД Sqlite3 в Python3. Можно ли использовать конструкции с VALUES(?) после FROM (когда имя таблицы берется из переменной), и после WHERE (когда в условиях сравниваются переменные со значениями столбцов). В INSERT INTO - работает, просто вставляет значения столбцов. А в данном простом запросе выборки с условием никак. Не хочется верить, что это не реализовано.
ПРИМЕР:
table1 = "days"
yr="2022"
d="1"
m="1"
cur.execute("""SELECT ym1, ym2 FROM (VALUES(?)) WHERE (year = VALUES(?)) AND (month = VALUES(?)) AND (day = VALUES(?));""", (table1, yr, d, m))
Ошибка:
sqlite3.OperationalError: near "VALUES": syntax error
Ответы (2 шт):
Автор решения: Qwertiy
→ Ссылка
Про таблицу не в курсе, подозреваю что нельзя. Но что вообще делает слово values во всех этих местах? Это ж не update.
WHERE (year = VALUES(?)) AND (month = VALUES(?)) AND (day = VALUES(?))
WHERE year = ? AND month = ? AND day = ?
Автор решения: Namerek
→ Ссылка
table1 = "days"
yr="2022"
d="1"
m="1"
cur.execute(
f"SELECT ym1, ym2 FROM {table1} WHERE year = ? AND month = ? AND day = ?;",
(table1, yr, d, m)
)