在 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')