我试图获取某些数据从一个柱其DATA_TYPE=NUMBER(1,0)的这段代码:

import cx_Oracle
conn = cx_Oracle.connect(usr, pwd, url)
cursor = conn.cursor()
cursor.execute("SELECT DELETED FROM SERVICEORDER WHERE ORDERID='TEST'")
print(cursor.fetchone()[0])

它抱怨,因此:

Traceback (most recent call last):
  File "main.py", line 247, in <module>
    check = completed()
  File "main.py", line 57, in completed
    deleted = cursor.fetchone()[0]
cx_Oracle.DatabaseError: OCI-22061: invalid format text [T

取代'DELETED'列与一个其DATA_TYPE=VARCHAR2不会引发这样的申诉。

有帮助吗?

解决方案 3

一个工作周围是把 time.sleep(1) 之前 cursor.fetchone():

...
cursor.execute("SELECT DELETED FROM SERVICEORDER WHERE ORDERID='TEST'")
time.sleep(1)
print(cursor.fetchone()[0])

其他提示

我在这个问题现在使用您5.0.4与Unicode支持。上述接受的解决方案并没有为我工作。删除列在该问题是一个数字列,这是什么原因导致这一错误。

根据邮件列表( http://comments.gmane.org/gmane.comp.python.db.cx-oracle/2390 )它可能是一个错误在Oracle,显示只有在您用Unicode支持。

从链接:"当我建立您没有Unicode支持,这一切工作,如预期的那样。当我建立您 Unicode的支持,试图使用一种查询 返回数值(例如):

con = Connection( ... )
cur = con.cursor()
cur.execute( 'SELECT 1 FROM DUAL' )
rows = cur.fetchall()

结果,在这个例外:

cx_Oracle.DatabaseError: OCI-22061: invalid format text [T

"

我做了什么工作,是在选择的声明,这样做:

cur.execute( 'SELECT to_char(1) FROM DUAL' )
rows = cur.fetchall()
for row in rows:
    val = int(row[0])

这是很丑陋的,但它的工作。

这些类型的错误走了,当我升级到您5.1.如果转不安装(喜欢它的发生,我在红帽子5.5)然后你可以从rpm2cpio的文件,采取您.因此,并把它放到你的蟒蛇的网站-包装目录。

我有同样的错误。

承诺帮助我:

conn = cx_Oracle.connect(...)
...
cursor.execute()
conn.commit()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top