【问题标题】:How do I know if I have successfully created a table (Python, Psycopg2)?我如何知道我是否已成功创建表(Python、Psycopg2)?
【发布时间】:2012-02-10 03:21:29
【问题描述】:

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

我希望收到类似“1 行受影响”这样的回复。

【问题讨论】:

  • 你可以使用 for 循环,我想...检查它是否受到影响。

标签: python psycopg


【解决方案1】:

这是一个老问题,但是检查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。文档是here
【解决方案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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多