2015-09-10 7 views
1

Я пытаюсь сделать автоматический alter table - добавление столбца, когда это необходимо. Проблема в том, что я начал получать UnicodeDecodeError.UnicodeDecodeError при изменении таблицы

Я не понимаю, почему эта ошибка поднимается. Почему он хочет использовать кодировку 'ascii'.

Я пробовал print attr.__class__, который печатает unicode. Я уже пробовал attr.decode('utf-8'), но все та же проблема поднимает.

ЛИНИЯ:

self.cur.execute("""ALTER TABLE data ADD COLUMN {} TEXT""".format(attr)) 

ВОЗВРАТ:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u010d' in position 5: ordinal not in range(128) 

У меня есть # -*- coding: utf-8 -*- на верхней части файла.

Что делать в этом случае? Можно ли узнать, какая кодировка используется?

EDIT: Если я переписал вариант, чтобы не использовать переменные, он работает.

+0

, как много вопросов, связанных с Unicode, это, вероятно, либо уйти или, по крайней мере, дать вам лучшее сообщение об ошибке, если вы используете Python 3. – lvc

ответ

1

Для преобразования из юникода в байты вы используете encode, а не decode.

В качестве альтернативы, сделать SQL строки Юникода:

self.cur.execute(u"""ALTER TABLE data ADD COLUMN {} TEXT""".format(attr)) 
Смежные вопросы