我查看過文檔,但沒有發現任何讓我知道是否通過cursor.execute(「...」)執行的最後一條命令成功的信息。如何知道我是否已成功創建表(Python,Psycopg2)?
我在期待像「1行受影響」這樣的回覆。
我查看過文檔,但沒有發現任何讓我知道是否通過cursor.execute(「...」)執行的最後一條命令成功的信息。如何知道我是否已成功創建表(Python,Psycopg2)?
我在期待像「1行受影響」這樣的回覆。
我希望某種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'
這是一個老問題,但檢查與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
,它返回包括與受影響的行的數量沿着最後執行的操作的類型的字符串。
類似的屬性實際上是'statusmessage'。文檔是[here](http://initd.org/psycopg/docs/cursor.html) – 2017-08-27 02:41:51
你可以使用for循環,我想...檢查它是否受到影響。 – Bry6n 2012-02-10 03:32:17