【问题标题】:How to connect oracle database with python pypyodbc如何使用 python pypyodbc 连接 oracle 数据库
【发布时间】:2017-01-04 23:54:37
【问题描述】:

我正在尝试使用 pypyodbc 从我的 python 代码连接一个 oracle 数据库:

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:protocol 适配器错误\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)
    )
  )

【问题讨论】:

  • 关键是通过定义dbq参数将python代码链接到tnsname.ora。因此,将代码更改为以下工作。 conn_string = "driver={Oracle in OraClient11g_home1}; dbq='tabto'; uid='myuid'; pwd='mypwd'" conn = pypyodbc.connect(conn_string)

标签: python oracle oracle11g pypyodbc


【解决方案1】:

关键是通过定义dbq参数将python代码链接到tnsname.ora。所以将代码更改为以下工作。

conn_string = "driver={Oracle in OraClient11g_home1}; dbq='tabto'; uid='myuid'; pwd='mypwd'"
conn = pypyodbc.connect(conn_string)

【讨论】:

  • 我只是想澄清一下以供将来参考,因为我对此感到困惑。但是 dbq 的参数可以是任何指定的 tns 名称。所以 dbq='tabto.oneco.com' 或 dbq='tabto.world' 也可以。
【解决方案2】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2020-02-06
    • 2018-02-13
    • 1970-01-01
    • 2017-06-23
    • 2018-12-13
    • 2013-10-03
    相关资源
    最近更新 更多