#python #python-3.x #sqlite
#python #python-3.x #sqlite
Вопрос:
В настоящее время я пишу программу на Python, в которой мне нужно выполнить поиск в базе данных SQLite3, я хочу иметь возможность выполнять поиск в базе данных с использованием переменной, данные для которой я получу из выпадающего списка Tkinter (графический интерфейс)
Ниже приведен мой табличный код…
db = sqlite3.connect('db.sqlite3')
cursor = db.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS depot_racks(
id INTEGER PRIMARY KEY,
rack TEXT,
rackloc TEXT,
floorzone TEXT,
product TEXT,
serial TEXT,
status TEXT,
entdate TEXT,
servdate TEXT,
parts TEXT,
pat TEXT)''')
Ниже приведен мой код для попытки поиска в базе данных с использованием переменной, которая получает выбор пользователя…
def search_all_racks():
selection = rackTextBox.get()
cursor.execute("SELECT * FROM depot_racks WHERE product LIKE '%selection%'")
for row in cursor.fetchall():
dataArea.insert('end', row)
Это ничего не возвращает, есть ли способ использовать selection
переменную внутри запроса SQLite?
Заранее спасибо
Ответ №1:
Вы используете строковый литерал 'selection'
, а не значение переменной selection
.
Это правильный способ сделать это:
cursor.execute("SELECT * FROM depot_racks WHERE product LIKE '%' || ? || '%'", (selection,))
Таким образом, подстановочные %
знаки будут объединены со значением строки selection
.
Комментарии:
1. Ммммм, это проблема с подсветкой синтаксиса stackoverflow? Конечные скобки, похоже, тоже являются частью строки.
2. @CoolCloud да, я тоже это вижу.