我已经实现在原始的SQL查询命名参数按Python的DB-API后遇到了问题。
早些时候,我的代码如下(这工作得很好,我的两个DEV服务器和我的客户的测试服务器上)
cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST WHERE TAG_NBR = '%s' " %(TAG_NBR))
我把它改成如下
cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST WHERE TAG_NBR = :TAG_NBR " ,{'TAG_NBR':TAG_NBR})
这个更改后的版本(与命名参数)工作正常,我的开发服务器上
- Windows XP中的Oracle XE
- 在SQL * Plus:11.2.0.2.0版
- cx_Oracle-5.1.2-11g.win32-py2.7
然而,我的客户的测试服务器上部署的时候,它不....所有查询的执行失败。
是我的客户的服务器的特性为
- Windows Server 2003中
- Oracle数据库10g企业版发布10.2.0.1.0 - 64bi
- cx_Oracle-5.1.2-10g.win32-py2.7
我得到的错误如下
Traceback (most recent call last):
File "C:/Program Files/App_Logic/..\apps\views.py", line 400, in regularize_TAG
T_cursor.execute("SELECT DISTINCT(TAG_STATUS) FROM TAG_HIST WHERE TAG_NBR = :TAG_NBR " ,{'TAG_NBR':TAG_NBR})
DatabaseError: ORA-01460: unimplemented or unreasonable conversion requested
不胜感激,如果有人可以帮助我度过了这个问题。
这个问题提出了自己,只有当cx_Oracle代码的Web应用程序(托管在Apache)内运行。
如果我从Python命令行中运行使用命名参数相同的代码,然后在查询运行得很好。