سؤال

أحاول إحضار بعض البيانات من عمود تمثل data_type = الرقم (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

استبدال العمود "المحذوف" بواحد لا يرمي 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])

نصائح أخرى

أنا أركض في هذه المشكلة الآن باستخدام CX_ORACLE 5.0.4 بدعم UNICODE. الحل المقبول أعلاه لم ينجح بالنسبة لي. العمود المحذوف في السؤال هو عمود رقمي ، وهو ما يسبب هذا الخطأ.

وفقا للقائمة البريدية ( http://comments.gmane.org/gmane.comp.python.db.cx-oracle/2390 ) قد يكون خطأ في Oracle يظهر فقط في CX_ORACLE مع دعم Unicode.

من الرابط: "عندما أقوم بإنشاء CX_ORACLE دون دعم Unicode ، يعمل كل شيء كما هو متوقع. عندما أقوم بإنشاء CX_ORACLE مع دعم 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])

إنه قبيح للغاية ، لكنه يعمل.

ذهبت هذه الأنواع من الأخطاء عندما قمت بالترقية إلى CX_ORACLE 5.1. إذا لم يتم تثبيت RPM (كما حدث ذلك بالنسبة لي على Red Hat 5.5) ، فيمكنك عادةً RPM2CPIO في الملف ، واتخذ cx_oracle.so ووضعه في دليل حزم موقع Python.

واجهت نفس الخطأ.

ساعدني الالتزام:

conn = cx_Oracle.connect(...)
...
cursor.execute()
conn.commit()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top