在 python cx_Oracle 中捕获 DatabaseError DPI-1004:无法获取错误消息
Catch in python cx_Oracle DatabaseError DPI-1004: unable to get error message
我使用 cx_Oracle 驱动程序和 SQLAlchemy 创建引擎。
成功创建 enine 如下:
conn_string = 'oracle+cx_oracle://user:pass@host:1521/?service_name=some_service'
eng = create_engine(conn_string, encoding='utf8')
当我尝试连接时:
eng.connect()
我发现错误:
DatabaseError: (cx_Oracle.DatabaseError) DPI-1004: unable to get error message
使用:
Python 3.5.2
cx-Oracle (6.2.1)
SQLAlchemy (1.1.15)
有人知道解决办法吗?
运行 一个看起来像这样的脚本以确定问题的根源:
import cx_Oracle
try:
cx_Oracle.connect("user/pw@dsn")
except cx_Oracle.DatabaseError as e:
obj, = e.args
print("Context:", obj.context)
print("Message:", obj.message)
问题已解决。
它需要在创建引擎中提供完整的 TNS 字符串,例如:
eng = create_engine('oracle+cx_oracle://user:pass@full_TNS_string')
我使用 cx_Oracle 驱动程序和 SQLAlchemy 创建引擎。 成功创建 enine 如下:
conn_string = 'oracle+cx_oracle://user:pass@host:1521/?service_name=some_service'
eng = create_engine(conn_string, encoding='utf8')
当我尝试连接时:
eng.connect()
我发现错误:
DatabaseError: (cx_Oracle.DatabaseError) DPI-1004: unable to get error message
使用:
Python 3.5.2
cx-Oracle (6.2.1)
SQLAlchemy (1.1.15)
有人知道解决办法吗?
运行 一个看起来像这样的脚本以确定问题的根源:
import cx_Oracle
try:
cx_Oracle.connect("user/pw@dsn")
except cx_Oracle.DatabaseError as e:
obj, = e.args
print("Context:", obj.context)
print("Message:", obj.message)
问题已解决。 它需要在创建引擎中提供完整的 TNS 字符串,例如:
eng = create_engine('oracle+cx_oracle://user:pass@full_TNS_string')