Найти - Пользователи
Полная версия: Поиск данных в SQLite3
Начало » Python для новичков » Поиск данных в SQLite3
1
PSAS
Здравствуйте!
Сначала программа спрашивает ИНН, который после ввода значения присваивается переменной.
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
ZerG
Может потому что
 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 запрос.
py.user.next
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,))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB