Как подключить базу данных Oracle к Python pypyodbc

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

conn_string = "driver={Oracle in OraClient11g_home1}; server='example.oneco.com:1521'; database='tabto'; uid='myuid'; pwd='mypwd'"
conn = pypyodbc.connect(conn_string)

Я получил сообщение об ошибке:

Ошибка: (u'HY000 ', u' [HY000] [Oracle] [ODBC] [Ora] ORA-12560: TNS: ошибка адаптера протокола \ n ')

Ниже приводится строка подключения, найденная в моем tnsnames.ora файле. Подскажите, пожалуйста, как правильно использовать pypyodbc.

tabto, tabto.world, tabto.oracleoutsourcing.com, tabto.oneco.com =
  (DESCRIPTION =
    (ADDRESS = 
      (PROTOCOL = TCP)
      (HOST = example.oneco.com)
      (PORT = 1521)
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = tabto_dcu)
    )
  )

person ju.    schedule 04.01.2017    source источник
comment
Ключ заключается в том, чтобы связать код Python с tnsname.ora, определив параметр dbq. Так что измените код на следующий рабочий. conn_string = "driver={Oracle in OraClient11g_home1}; dbq='tabto'; uid='myuid'; pwd='mypwd'" conn = pypyodbc.connect(conn_string)   -  person ju.    schedule 05.01.2017


Ответы (2)


Ключ - связать код Python с tnsname.ora, указав параметр dbq. Так что измените код на следующий рабочий.

conn_string = "driver={Oracle in OraClient11g_home1}; dbq='tabto'; uid='myuid'; pwd='mypwd'"
conn = pypyodbc.connect(conn_string)
person ju.    schedule 05.01.2017
comment
Я просто хочу уточнить для будущих ссылок, так как я запутался в этом. Но параметром для dbq может быть любое из указанных имен tns. Так что dbq = 'tabto.oneco.com' или dbq = 'tabto.world' также будет работать. - person Yi Zong Kuang; 18.01.2021

conn = pyodbc.connect(r'DRIVER={SQL Server Native Client 11.0};SERVER=example.oneco.com:1521;DATABASE=tabto;UID=youruid;PWD=password')

попробуйте без кавычек (') вашего кода посередине ...

тоже проверьте pyodbc wiki: https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Windows

person Diogo Sousa    schedule 05.01.2017