Мне сложно заставить sql в python правильно пройти через MySQLdb. Меня убивает форматирование строк в Python.
В моем операторе sql используется ключевое слово LIKE с подстановочными знаками. Я пробовал много разных вещей на Python. Проблема в том, что как только я заставляю один из них работать, в MySQLdb появляется строка кода, которая отрывается от строкового формата.
Попытка 1:
"SELECT tag.userId, count (user.id) as totalRows FROM user INNER JOIN tag ON user.id = tag.userId WHERE user.username LIKE '%% s%'"% (query)
Это бесполезно. Я получаю ошибку значения:
ValueError: неподдерживаемый символ формата '' '(0x27) с индексом 128
Попытка 2:
"SELECT tag.userId, count (user.id) as totalRows FROM user INNER JOIN tag ON user.id = tag.userId WHERE user.username LIKE '\ %% s \%'"% (query)
Тот же результат я получаю с первой попытки.
Попытка 3:
like = "LIKE '%" + str (query) + "%'" totalq = "SELECT tag.userId, count (user.id) as totalRows FROM user INNER JOIN tag ON user.id = tag.userId WHERE user.username "+ нравится
Это правильно создает переменную totalq, но теперь, когда я запускаю запрос, я получаю ошибки от MySQLdb:
Файл "build / bdist.macosx-10.6-universal / egg / MySQLdb / cursors.py", строка 158, в execute query = query% db.literal (args) TypeError: недостаточно аргументов для строки формата
Попытка 4:
like = "LIKE '\%" + str (query) + "\%'" totalq = "ВЫБРАТЬ tag.userId, считать (user.id) как totalRows FROM пользователя INNER JOIN tag ON user.id = tag.userId WHERE user .username "+ лайк
Это тот же результат, что и для попытки 3.
Все это кажется действительно странным. Как я могу использовать подстановочные знаки в операторах sql с Python?