psycopg2:如何知道 cur.rowcount 何时不表示行数?

Dyl*_*ger 7 python postgresql psycopg2

我正在寻找一种方法来以编程方式确定cur.rowcount描述可获取的行数与受影响的行数之间的差异。

例如:

>>> cur.execute('CREATE TABLE test (gid serial, val numeric);')
>>> cur.execute('INSERT INTO test (val) values (1), (2), (3);')
>>> cur.execute('SELECT * FROM test;'); cur.rowcount
3
>>> cur.execute('UPDATE test SET val = 1;'); cur.rowcount
3
>>> cur.fetchall()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
psycopg2.ProgrammingError: no results to fetch

>>> cur.execute('DELETE FROM test;'); cur.rowcount
3

>>> cur.execute('DROP TABLE test;')
>>> cur.rowcount
-1
Run Code Online (Sandbox Code Playgroud)

使用 Python 2.7 和 psycopg2 2.6.2。

Nic*_*nes 3

根据文档cur.description将用于None没有结果集的操作。