Запросы по схеме Oracle в cx_Oracle

Я могу войти в свой экземпляр Oracle, используя sqlplus с:

$ env | grep -E '(TWO|SID)'
TWO_TASK=TEST
$ sqlplus me/my_password@TEST

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

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;

Тем не менее, в моем коде Python, используя 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

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

1 ответ

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

Другие вопросы по тегам