Невозможно выполнить аналогичный запрос с параметром, используя pyodbc - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь передать переменную в качестве параметра в запросе на доступ, чтобы я мог создать список похожих имен на своем веб-сайте. Я использую pyodb c для доступа к базе данных .mdb для моего flask приложения. Я пытался передать переменную разными способами, например ...

xyz = "SomeName"
cursor.execute('SELECT * FROM Employees WHERE EmployeeName LIKE %?%', xyz)

, она не сработала, поэтому я попытался ...

xyz = "SomeName"
cursor.execute('SELECT * FROM Employees WHERE EmployeeName LIKE ?', "%xyz%")

, это не просто. Переменная больше не является переменной в двойных кавычках, поэтому она запускает 'xyz' как строку. Но запрос работает, когда я передаю его просто как строку ...

cursor.execute('SELECT * FROM Employees WHERE EmployeeName LIKE ?', "%SomeName%")

Как передать переменную пользовательского ввода, чтобы этот запрос работал? Заранее спасибо.

1 Ответ

2 голосов
/ 21 февраля 2020

Вы можете использовать & для объединения строк в ms-access:

xyz = "SomeName"
cursor.execute('SELECT * FROM Employees WHERE EmployeeName LIKE "%" & ? & "%"', xyz)

В качестве альтернативы, вы можете объединить строковую переменную в Python:

xyz = "SomeName"
cursor.execute('SELECT * FROM Employees WHERE EmployeeName LIKE ?', '%' + xyz + '%')
...