2014-08-28 7 views
0

я могу войти на свой оракул, например, используя sqlplus с:Запросы по Oracle Schema-х в cx_Oracle

$ env | grep -E '(TWO|SID)' 
TWO_TASK=TEST 
$ sqlplus me/[email protected] 

И тогда я могу выполнить следующий запрос без проблем:

select 
    persons.person.key AS id, 
    persons.person.lname as lastname, 
    persons.person.fname as firstname, 
    sid.organizations.org_code as org, 
    sid.organizations.division_code as division, 
    sid.organizations.directorate_code as directorate, 
    persons.person.status as status 
from 
    persons.person, 
    sid.organizations 
where 
    persons.person.dept_id=sid.organizations.org_id; 

Однако, в моем питона код, используя cx_Oracle, с помощью следующего кода (т.е. идентичный запрос):

def get_oracle(user, password, tns='TEST'): 
    db = cx_Oracle.connect(user, password, tns) 
    cursor = db.cursor() 
    return cursor 

db = get_oracle('me', 'my_pass') 
db.execute(""" 
select 
    persons.person.key AS id, 
    persons.person.lname as lastname, 
    persons.person.fname as firstname, 
    sid.organizations.org_code as org, 
    sid.organizations.division_code as division, 
    sid.organizations.directorate_code as directorate, 
    persons.person.status as status 
from 
    persons.person, 
    sid.organizations 
where 
    persons.person.dept_id=sid.organizations.org_id; 
""") 
for r in db: 
    pass 

Результаты получить следующее сообщение об ошибке:

cx_Oracle.DatabaseError: ORA-00911: invalid character 

Я уверен, что мое соединение отлично, как и другие запросы работают нормально.

+2

Почему вы полагаете, что это имеет какое-либо отношение к таблицам, существующим в другой схеме? У вас есть точка с запятой в конце инструкции, которая не является частью оператора SQL (это один из способов сказать SQL * Plus, что вы закончили ввод инструкции SQL). Я также не могу понять, почему у вас три символа двойной кавычки в начале и конце строки - почему бы просто не использовать один символ одной кавычки, чтобы разграничить строку так же, как вы делаете со всеми остальными строками вашего кода ? –

+0

3 символа двойной кавычки довольно стандартны для многострочных строк Python @Justin. Проблема заключается в том, что вы описываете полуколону. – Ben

+0

спасибо, Джастин, да - просто глупая опечатка! – yee379

ответ

0

, чтобы ответить на мой собственный вопрос, это глупая опечатка с точкой с запятой в конце запроса!

 Смежные вопросы

  • Нет связанных вопросов^_^