Django UnicodeEncodeError на QuerySet дополнительно к PostgreSQL, если запускается из оболочки - PullRequest
0 голосов
/ 03 мая 2011

Привет всем Я использую Django 1.2.5 с Python 2.6 на двух машинах: Ubuntu 11.04 и Debian Lenny. Первый - мой локальный разработчик, а второй - удаленный сервер. Я использую django-fts и postgresql (база данных удалена и уникальна для обеих установок) для выполнения запросов полнотекстового поиска. Интересно, что на локальном компьютере я могу выполнить запрос fts с русскими символами. На удаленном сервере он выдает UnicodeEncodeError при оценке моего дополнительного.

В бэкэнде django-fts postgre я нахожу этот код:

    ts_query = "plainto_tsquery('%s','%s')" % (self.language, unicode(query).replace("'", "''"))
    where = '%s @@ %s' % (qn(self.vector_field.column), ts_query)
    select = {}
    order = []
    if rank_field is not None:
        select[rank_field] = 'ts_rank(%s.%s, %s, %d)' % (qn(self.model._meta.db_table), qn(self.vector_field.column), ts_query, rank_normalization)
        order = ['-%s' % rank_field]
    return qs.extra(select=select, where=[where], order_by=order)`

где запрос содержит u '\ u0430' или u "а" (кириллица), так что он до сих пор закодирован в utf-8.

Ошибка появляется в django / db / models / sql / compiler.py в строке 489 при попытке собрать запрос из дополнений: result.append('(%s)' % str(col))

Итак, я перепробовал все, что касается кодирования / декодирования. Переменная LANG - это "ru_RU.UTF-8" на обоих компьютерах и в settings.py как DEFAULT_CHARSET. Больше идей нет. Любая помощь?

ОБНОВЛЕНИЕ: Я только что обнаружил, что мое приложение выполняется одинаково на обоих компьютерах. Разница между выполнением из оболочки (python manage.py runserver localhost: 8000) и запуском в режиме отладки из среды pydev в eclipse. Итак, может кто-нибудь сказать мне, есть ли разница между ручным запуском и запуском pydev относительно моих проблем кодирования?

ТИА. Petr

1 Ответ

1 голос
/ 03 мая 2011

добавьте u '' ко всей строке в вашем примере.
как u'ts_rank (% s.% S,% s,% d) '% (...)
, а также интерполяционные переменныес% без сброса базы данных плохо.

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