sqlalchemy create_engine 甲骨文问题

sqlalchemy create_engine issue with oracle

我正在尝试连接到我的 Oracle 数据库,但我无法创建引擎:

engine = create_engine('oracle://user:pass@localhost:1521/dbname')

我得到的错误是:

/anaconda2/lib/python2.7/site-packages/sqlalchemy/dialects/oracle/cx_oracle.pyc in __init__(self, auto_setinputsizes, exclude_setinputsizes, auto_convert_lobs, threaded, allow_twophase, coerce_to_decimal, coerce_to_unicode, arraysize, **kwargs)
705         if hasattr(self.dbapi, 'version'):
706             self.cx_oracle_ver = tuple([int(x) for x in
707                                         self.dbapi.version.split('.')])
708         else:
709             self.cx_oracle_ver = (0, 0, 0)

ValueError: invalid literal for int() with base 10: '0b1'

我的OS:RedHat 7

Oracle Express 11g

Python 2.7 蟒蛇

cx_Oracle 6.0

cx_Oracle.clientversion() = (12, 2, 0, 1, 0)

知道如何解决这个问题吗?

由于 cx_Oracle 的预发布版本 6.0b1 中的 'b',这是 SQLAlchemy 中的错误(或至少是不兼容)。已报告此问题 here 并提供建议的修复,您可以将其应用于自己安装的 SQLAlchemy,或者您可以等待发布修复。或者,如果您使用 cx_Oracle 版本 5.3,则不会出现该问题。