привязки sqlite3 в регулярных выражениях - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь найти базу данных SQLite в Python на основе простого значения регулярного выражения%. Однако при попытке использовать привязку для предотвращения SQL Injection sqlite3 не распознает? в качестве привязки, когда окружены в процентах символов. Как я могу получить sqlite3 для распознавания моей привязки при использовании в регулярном выражении?

SELECT * FROM opportunities WHERE LOWER(title) LIKE LOWER('%?%');

, запустить с

print(sql, values)
cursor.execute(sql, ('somequery',))

, возвращает

SELECT * FROM opportunities WHERE LOWER(title) LIKE LOWER('%?%'); ('somequery',)
Traceback (most recent call last):
  File "[REDACTED]", line 86, in <module>
    opportunitiesSearchResults = databaseFunctions.searchOpportunities(memCursor, currentFilter)
  File "[REDACTED]", line 102, in searchOpportunities
    cursor.execute(sql, values)
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 1 supplied.

1 Ответ

1 голос
/ 16 апреля 2020

? не указывается в кавычках. Вы должны взять его из кавычек.

SELECT * FROM opportunities WHERE LOWER(title) LIKE '%' || LOWER(?) || '%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...