поэтому я знаю, что подобные вопросы были заданы раньше, но предлагаемые решения, похоже, не работают для меня, если, возможно, я не ошибаюсь.
Я хочу изменить это: query1= ("SELECT anthologyID, title FROM newschema.item WHERE title LIKE 'asperges'" )
где вывод 51962, Asperges
в нечто подобное:
asperges= "asperges" cursor.execute(query1,asperges) query1= ("SELECT anthologyID, title FROM newschema.item WHERE title LIKE '%s'")
проблема: вывод все неправильный (я печатаю в цикле for на курсор только для справки), и вместо того, чтобы получать только одно совпадение, я получаю соответствие по всем заголовкам в этой таблице.
что?
(потому что кто-то, вероятно, скажет мне сделать что-то вроде этого: query1= ("SELECT anthologyID, title FROM newschema.item WHERE title LIKE '%s'", asperges)
Этот запрос дает мне AttributeError: 'tuple' object has no attribute 'encode'
Спасибо!
Для cursor.execute вы можете дать два аргумента: сначала строка со значениями, которые нужно заменить ("% s"), а вторая - кортеж, так что вы можете бросить это на свой курсор (лучший вариант!):
cursor.execute("SELECT anthologyID, title FROM newschema.item WHERE title LIKE %s",('aspergers',))
НЕ ЗАБУДЬТЕ запятую после "aspergers"! Он преобразует ваши данные в кортеж.
Или вы можете задать запрос и передать его курсору:
query1= "SELECT anthologyID, title FROM newschema.item WHERE title LIKE %s" % (asperges,)
cursor.execute(query1)
ПРОВЕРЬТЕ COMMA снова.