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 шт):

Автор решения: Oopss
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())
→ Ссылка