Как сохранить целостность строки из ответа базы данных, используя Python

1

Я использую py-postgresql в качестве драйвера базы данных, когда вы выбираете строку с не-ASCII-символами, ответ заменяет символ "", что я могу сделать, чтобы изменить его на правильный символ?

Это мой код:

class decodify:

    def __init__(self):
        db = pgDriver.connect(user = 'demo', password='demo' database='hidura_karinapp', host='localhost', port='5432')
        d = db.prepare("""SELECT modules_reg.code FROM modules_reg, domain_reg, sbdomain_reg, sbdomdl_asc where(modules_reg.id = sbdomdl_asc.module AND modules_reg.mdname = 'police' AND sbdomain_reg.id = sbdomdl_asc.domain AND sbdomain_reg.domain = domain_reg.id AND domain_reg.dname = 'bmsuite.com' AND sbdomain_reg.sbname = 'www')""")
        s = d()
        print(s)

if __name__ == '__main__':
    decodify()
  • 0
    Ppl спасибо за все, проблема была на JS, который обрабатывает данные и отправляет их на сервер, теперь я должен исправить там, но спасибо !!!
Теги:
python-3.x
unicode

4 ответа

1
Лучший ответ

Вы устанавливаете client_encoding? Теоретически py-postgresql должен автоматически использовать правильный client_encoding. Либо вы устанавливаете его на что-то неправильно, либо что-то не так, как оно его обнаруживает, и в этом случае вы должны его установить. Вопрос в том, к чему.:)

  • 0
    На Postgresql client_encodig - это utf8, я не изменил client_encoding на postgres
0

Вы можете использовать psycopg2, который поддерживает unicode...

  • 1
    Но поддержка Python 3 находится в стадии бета-тестирования, и она появилась всего пару недель, может быть, проект начался до этого?
  • 0
    Я предпочитаю использовать py-postgresql, это была единственная проблема с этим драйвером.
0

Какую кодировку символов вы используете в базе данных? Проверьте параметр client_encoding в файле postgresql.conf и посмотрите, есть ли этот utf-8.

  • 0
    Да, это так, используя utf-8, потому что db поддерживает символ, которого нет у драйвера.
0

Что я делаю - это трюк, чтобы установить кодировку по умолчанию Python так же, как и кодировку базы данных. Моя база данных - UTF-8, поэтому мне нужно запустить скрипты верхнего уровня, например:

#!/usr/bin/python -S

import sys
sys.setdefaultencoding("utf-8")
import site

Все строки встречаются чистыми, без перевода. Это с Python 2.x. Python 3 может быть другим.

  • 0
    Это не работает, <samp> import sys sys.setdefaultencoding ("utf8") import site </ samp> И дайте мне это: AttributeError: у объекта 'module' нет атрибута 'setdefaultencoding'
  • 0
    @hidura Вы используете Python 3?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню