Как я могу выполнить поиск в базе данных, используя целочисленную переменную id?

#python #python-3.x #database #sqlite #tkinter

#python #python-3.x #База данных #sqlite #tkinter

Вопрос:

Я разрабатываю графический интерфейс CRUD.

 def crudRead():
myConex=sqlite3.connect("Users")
myCursor=myConex.cursor()
myCursor.execute("SELECT*FROM USER_DATA WHERE ID=" id_number.get())
theUser=myCursor.fetchall()
for user in theUser:
    id_number.set(usuario[0])
    username.set(usuario[1])
    password.set(usuario[2])
    biographyText.insert(1.0, usuario[3])

myConex.commit()
 

Ошибка:
myCursor.execute(«ВЫБЕРИТЕ * ИЗ USER_DATA, ГДЕ ID=» id_number.get())

Ошибка типа: можно только объединить str (не «int») в str


Как я могу выполнить поиск по идентификатору без этой ошибки? Я попытался установить id_number.get(), и он не возвращает никаких ошибок, но программа не работает должным образом, потому что столбец ID в базе данных имеет целочисленные значения.

Комментарии:

1. Смотрите Документацию о том, как указывать аргументы в SQL-запросе.

Ответ №1:

Используйте заполнитель:

 myCursor.execute("SELECT * FROM USER_DATA WHERE ID=?", (id_number.get(),))
 

Комментарии:

1. Что также намного безопаснее, чем построение строки запроса.

Ответ №2:

Возможно, использование f строк может помочь.

 myCursor.execute(f'SELECT*FROM USER_DATA WHERE ID={id_number.get()}')
 

Комментарии:

1. создание подобных запросов сопряжено с риском внедрения sql, и это один из основных способов взлома систем в наши дни.