Подключение к базе данных Oracle с помощью cx_Oracle на Python

Я использую Debian 5, Python 2.5 с установленной версией юникода cx_Oracle. Я пытаюсь подключиться, используя приведенный ниже сценарий, но это не удается

>>> connection = cx_Oracle.connect('hr/XXXXX@local_xe')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument 1 must be unicode, not str

Я думаю, поскольку установленный cx_Oracle является версией Unicode, он просит меня указать Unicode в качестве первого параметра. но это не берет струны, и я не знаю, что я мог бы поставить еще?


person Mo J. Mughrabi    schedule 03.12.2010    source источник
comment
попробовать cx_Oracle.connect(u'hr/XXXXX@local_xe')?   -  person Sathyajith Bhat    schedule 03.12.2010
comment
@ Сатья: большое спасибо. Это решило мою проблему, не могли бы вы сказать мне, почему нам нужно поставить u перед строкой? что это обозначает?   -  person Mo J. Mughrabi    schedule 04.12.2010
comment
@ Мо Дж. Я поставил ответ, объясняющий, зачем это нужно.   -  person Sathyajith Bhat    schedule 04.12.2010


Ответы (2)


Ты должен попытаться

cx_Oracle.connect(u'hr/XXXXX@local_xe')

Поскольку у вас есть unicode-версия cx_Oracle, он ожидает, что строка подключения будет unicode sring (argument 1 must be unicode, not str)

Если вставить u'' перед строкой, она преобразуется в Unicode и, следовательно, не вызывает ошибки.

person Sathyajith Bhat    schedule 04.12.2010

решение заключалось в том, чтобы разместить следующие

cx_Oracle.connect(u'hr/XXXXX@local_xe')

u перед строкой. Не знаю почему, но это решило проблему для меня.

person Mo J. Mughrabi    schedule 04.12.2010