Почти неделю пытаюсь перевести проект Django c SQLite на MySQL. Уже прошел сад граблей с настройками SQL-сервера, хоста, удаленного доступа, файрвола, переноса данных, различий в размерах полей и построении индексов... И вот последние (надеюсь) грабли с "not enough arguments for format string":
Имеется raw-запрос:
from project.models import my_model
import re
import urllib
def Autocomplete_Addr ( request ):
msg = u""
SQLquery = u""
part = re.split ("[, /;|]*", urllib.unquote(request.GET['term']))
for i in part[:-1]:
SQLquery += u"(sAddress LIKE '%%%s%%') AND " % i
SQLquery += u"(sAddress LIKE '%%%s%%') " % part[-1]
SQLquery = u"SELECT id, sAddress " + \
u"FROM project_adress_list " + \
u"WHERE " + SQLquery +\
u"ORDER BY sAddress " \
u"LIMIT 10;"
qu = my_model.objects.raw(SQLquery)
for i in qu:
msg += '"' + i.sAddress + u'",'
Который порождает исключение:
Exception Value: not enough arguments for format string
Ошибка возникает в строчке:
for i in qu:
Интернет даёт массу ответов о причинах такой ошибки, но пока проверка последовательно всех из них показывает, что проблема, похоже, где-то не в области "отсутствия аргументов в строке".
P.S. Возможно знатоков наведут на ответ предыдущие "грабли". Точно такая же ошибка возникала в предыдущей строке, когда она была немного иной:
qu = my_model.objects.raw(SQLquery)[:10]
Отказавшись от [:10] и добавление LIMIT 10 в raw-SQL-запрос ошибка была решена, и... теперь возникает в следующей строке!