2012-02-10 78 views

回答

2

我希望某種exception to be risen
如果一切正常 - 錯誤代碼是00000並且沒有例外會升高。

create table情況下,您可以隨時double check

try: 
    cur.execute("SELECT ouch FROM aargh;") 
except Exception, e: 
    pass 

errorcodes.lookup(e.pgcode[:2]) 
# 'CLASS_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION' 
errorcodes.lookup(e.pgcode) 
# 'UNDEFINED_TABLE' 
3

這是一個老問題,但檢查與psycopg2成功操作的一種方式是簡單地看rowcount屬性爲後光標你聲明。該屬性返回最後一個execute語句影響的行數。

例如

connection = psycopg2.connect(dbname="foo",user="postgres") 
cur = connection.cursor() 
cur.execute("INSERT INTO foo VALUES (%s, %s)", (1,2)) 
cur.rowcount # returns 1 
cur.execute("SELECT * FROM foo") 
cur.rowcount # returns 0 

類似的屬性是messagestatus,它返回包括與受影響的行的數量沿着最後執行的操作的類型的字符串。

+0

類似的屬性實際上是'statusmessage'。文檔是[here](http://initd.org/psycopg/docs/cursor.html) – 2017-08-27 02:41:51

相關問題