SQLite Строка во фразе WHERE предложения SELECT
Есть очень простая БД nmon, состоящая всего из двух таблиц:
$ sqlite3 nmon.db
sqlite> .tables
monument type_mom
Во второй таблице type_mom всего одна запись:
sqlite> select * from type_mom;
1|nature
Мне нужно выполнить поиск по строковой колонке name во второй таблице, что бы получить значение из первой колонки - id этой записи.
В python программе делаю это так:
tt = 'nature'
ex_string = f"select id from type_mom where name='{tt}'"
print(ex_string)
con.execute(ex_string)
row = cursor.fetchone()
print(row)
Но строка в таблице не находится! На печать выдаётся:
select id from type_mom where name='nature'
None
Самое загадочное в том, что если я просто сделаю копипаст строки select id from type_mom where name='nature' в консольную утилиту, то всё отрабатывает нормально:
sqlite> select id from type_mom where name='nature';
1
Почему один и тот же оператор select нормально работает в консоли и не работает в программе на python ?
Ответы (1 шт):
ex_string = f"select id from type_mom where name='{tt}'"
con.execute(ex_string)
Своим не правильным запросом, вы получает объект Cusor, теперь из этого экземпляра нужно взять кортеж.
попробуйте так :
print(con.execute("select id from type_mom where name=?",(tt,)).fetchone())