Как сохранить целостность строки из ответа базы данных, используя Python - PullRequest
1 голос
/ 18 февраля 2011

Я использую 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()

Ответы [ 4 ]

1 голос
/ 18 февраля 2011

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

0 голосов
/ 18 февраля 2011

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

0 голосов
/ 18 февраля 2011

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

#!/usr/bin/python -S

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

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

0 голосов
/ 18 февраля 2011

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

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