Фильтрация запросов в Django с помощью sqlite - PullRequest
1 голос
/ 04 сентября 2010

Я пробовал следующий запрос с Django,

def search(search_text):
    q  = Info.objects.filter(title__contains=str(search_text))
    print q.query

Напечатанный запрос:

SELECT "d"."id", "d"."foo" FROM "d_info" WHERE "d_info"."title" LIKE %hello% ESCAPE '\' 

Запрос не выполняется, потому что текст после LIKE не имеет кавычеквокруг него.Запрос завершается успешно, когда я запускаю запрос в приглашении sql с кавычками вокруг текста после LIKE, как показано ниже

SELECT "d"."id", "d"."foo" FROM "d_info" WHERE "d_info"."title" LIKE '%hello%' ESCAPE '\' 

Как мне заставить Django добавить кавычки вокруг search_text, чтобы запрос прошел успешно?

Я использую Djanog с sqlite3

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

Я попробовал это с Postgresql 8.3. Запрос генерируется без кавычек. Однако выполнение фильтра возвращает допустимый набор запросов с ожидаемыми экземплярами. Можете ли вы попробовать выполнить

q = Info.objects.filter(title__contains=str(search_text))
print q.count()

и посмотреть, работает ли он?

0 голосов
/ 06 июня 2012

Размещение моего комментария выше в качестве ответа

Получается, что запрос работает в Django, но когда его просят напечатать запрос и если я скопирую напечатанный запрос и выполню его в оболочке mysql или sqliteне работаетДжанго, вероятно, неправильно печатает запрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...