Поиск в базе данных SQLite с помощью переменных Python

1

У меня есть база данных SQLite, которую я бы хотел искать с использованием переменных Python, например:

cur.execute("SELECT * FROM list WHERE InstitutionName=Variable")

В идеале это позволило бы мне вернуть каждую строку в виде списка в более крупный список, содержащий все строки, которые ищет пользователь. Я понимаю, что у меня выше, это псевдокод. Как я мог это написать?

Теги:
sqlite3

3 ответа

12
Лучший ответ

Я думаю, что вы хотите использовать функцию замены параметров:

cur.execute("SELECT * FROM list WHERE InstitutionName=?", (Variable,))

Там больше документации в действительной команде выполнения и в четвертом окне кода кода на странице документов sqlite3.

Обратите внимание, что вы явно не должны использовать функцию % или format поскольку это восприимчиво к атакам при инъекциях:

# NEVER DO THIS
cur.execute("SELECT * FROM list WHERE InstitutionName='%s'" % (Variable,))
  • 0
    Я бы проголосовал, если бы у меня было достаточно репутации! Это именно то, что я хотел сделать! Большое вам спасибо <3
  • 0
    Хаха, нет проблем. :)
0

Если вы хотите отобразить несколько записей из базы данных, вы можете использовать ключевое слово (LIKE) в запросе sql:

("SELECT * FROM TABLENAME WHERE name LIKE'%?%'",(Variable,))
0

Если вы хотите использовать как

cur.execute("SELECT * FROM list WHERE InstitutionName like '%'||?||'%'", (Variable,))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню