Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 28, 2022 21:16:22

PSAS
Зарегистрирован: 2021-11-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск данных в SQLite3

Здравствуйте!
Сначала программа спрашивает ИНН, который после ввода значения присваивается переменной.
def RKO():
connection = sqlite3.connect('text.sqlite') # Подключение к БД
q = connection.cursor() # Создание курсора для работы с БД
poisk_inn = int(input(“Введите инн организации/ИП: ”))
sql = "SELECT * FROM UL WHERE ИНН=7719465294
q.execute(sql)
res = q.fetchall()
for el in res:
print(el)

в данном случае все работает,

но если сравнение делать с переменной poisk_inn возникает ошибка.

connection = sqlite3.connect('text.sqlite') # Подключение к БД
q = connection.cursor() # Создание курсора для работы с БД
poisk_inn = int(input(”Введите инн организации/ИП: “))
sql = ”SELECT * FROM UL WHERE ИНН=poisk_inn"
q.execute(sql)
res = q.fetchall()
for el in res:
print(el)

sqlite3.OperationalError: no such column: poisk_inn

Отредактировано PSAS (Окт. 28, 2022 21:17:04)

Офлайн

#2 Окт. 28, 2022 21:25:23

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Поиск данных в SQLite3

Может потому что

 sql = SELECT * FROM UL WHERE ИНН=poisk_inn"
print(sql)
>>  SELECT * FROM UL WHERE ИНН=poisk_inn"
poisk_inn = 99
sql = fSELECT * FROM UL WHERE ИНН={poisk_inn}"
print(sql)
>>  SELECT * FROM UL WHERE ИНН=99"
Но это неправильный метод так как не защищает от иньекций. Так как в инпуте может прийти SQL запрос.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Окт. 29, 2022 00:29:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Поиск данных в SQLite3

PSAS
  
poisk_inn = int(input("Введите инн организации/ИП: "))
sql = "SELECT * FROM UL WHERE ИНН=poisk_inn"
q.execute(sql)

Почитай примеры
https://docs.python.org/3/library/sqlite3.html#how-to-use-placeholders-to-bind-values-in-sql-queries
В них показывается, как это делается.

  
poisk_inn = int(input("Введите инн организации/ИП: "))
sql = "SELECT * FROM UL WHERE ИНН=?"
q.execute(sql, (poisk_inn,))



Отредактировано py.user.next (Окт. 29, 2022 00:30:06)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version