如何知道我是否成功创建了一个表格(Python,Psycopg2)?

15

我查看了文档,但没有找到任何让我知道通过cursor.execute("...")执行的最后一个命令是否成功的信息。

我期望得到像"影响1行"这样的回复。


你可以使用一个for循环来检查是否受到影响。 - Bry6n
2个回答

15

这是一个老问题,但检查使用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

一个类似的属性是statusmessage,它返回一个字符串,其中包括执行的最后操作类型以及受影响的行数。


相似的属性实际上是 statusmessage。文档在这里:http://initd.org/psycopg/docs/cursor.html。 - Nick

3
我会期望出现某种异常情况
如果一切顺利——错误代码是00000,就不会引发任何异常。
在创建表的情况下,你总可以再次确认
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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接