cx_oracle错误处理问题

问题描述:

我试图在执行以执行cx_Oracle以下查询,但得到以下错误:cx_oracle错误处理问题

print 'Error.code =', error.code 
AttributeError: 'str' object has no attribute 'code' 

代码:

try: 
    conn.exec("Select * from table1") 
except cx_Oracle.DatabaseError, ex: 
    error, = ex.args  
    print 'Error Inserting Field Base' 
    print 'Error.code =', error.code 
    print 'Error.message =', error.message 
    print 'Error.offset =', error.offset 
    conn.rollback() 
+1

必须有更多的代码在某处......如果'conn'是一个连接,就没有'conn.exec'这样的东西。如果它是一个游标,那么它应该是** cursor.execute **。你在使用其他图书馆吗? – Gerrat

+0

它的execute..typo错误 – user1050619

+1

你能发布一个完整的例子来显示你的问题(你可以使用一个虚拟的连接字符串)。你没有展示出导致问题的真正原因,也没有看到它,我们无法帮助你。当您尝试创建更完整的示例时,您可能会发现您的问题。 – Gerrat

我认为这是一个更好的办法做到这一点。我不确定你的代码有什么问题,但没有得到更多的细节,但试试这个,我希望这将是有用的。

In [10]: connstr="%s/%[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SERVICE_NAME=%s)))" % tuple(db[0:5]) 
In [11]: try: 
    ....:  conn = cx_Oracle.connect(connstr) 
    ....:  query = 'select * from table_name limit 1;' 
    ....:  curs = conn.cursor() 
    ....:  curs.arraysize=50 
    ....:  curs.execute(query) 
    ....:  curs.close() 
    ....:  conn.close() 
    ....: except cx_Oracle.DatabaseError, ex: 
    ....:  error, = ex.args 
    ....:  print 'Error.code =', error.code 
    ....:  print 'Error.message =' , error.message 
    ....:  print 'Error.offset =', error.offset 
    ....:  conn.rollback() 
    ....:  
Error.code = 933 
Error.message = ORA-00933: SQL command not properly ended 

Error.offset = 31