我怎么知道我是否成功创建了一个表(Python,Psycopg2)?

时间:2012-02-10 03:21:30

标签: python psycopg

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

我期待一个像“1行受影响”的回复。

2 个答案:

答案 0 :(得分:8)

这是一个老问题,但使用psycopg2检查成功操作的一种方法是在语句后查看游标的rowcount属性。此属性返回受上一个execute语句影响的行数。

e.g。

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,它返回一个字符串,包括上次执行的操作的类型以及受影响的行数。

答案 1 :(得分:3)

我期待某种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'