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