我在Oracle中使用cx_Oracle 5.1版(autoload=True(反映表时遇到问题。cx_Oracle 5.0.4版本下一切正常。这是我得到的错误:
DatabaseError: (DatabaseError) ORA-01460: unimplemented or unreasonable conversion requested
不知怎的,发送到oracle的查询没有正确替换表名和模式。有人见过这样的事情并有解决方案吗?我希望避免为所有表手动定义列。如果可能的话,我也想使用最新的版本。
我刚刚提交了一个补丁,为我修复了这个问题。对Unicode的支持被添加到cx_Oracle中,后来被删除。SQLAlchemy的cx_oracle.py中有几行检查cx_oracle模块的版本。修补程序会更新这些版本检查,以考虑恢复的Unicode支持。
我想是你的问题帮助我在几周前第一次使用cx_Oracle使用SQLAlchemy,所以谢谢你的提问!:-D
正如Alex补丁线程中所讨论的,解决方案是设置NLS_LANG环境变量,以便cx_oracle可以使用正确的转换器。例如:
import os
os.environ["NLS_LANG"] = ".UTF8"