无法使用 psycopg2 截断表

GMi*_*ael 5 postgresql psycopg2

我尝试使用 psycopg2 从 Python 应用程序截断表。该操作返回 -1,没有异常或任何问题指示。该表没有被截断。该语句本身是正确的,因为当我通过 psql 运行它时它可以工作。

DB服务器和客户端都是RHEL 7.6。我使用 PostgreSQL 11.2、Python 2.75 和 psycopg2 2.5.1.3el7

代码很简单:

m_dbCon = psycopg2.connect(user=dbUser, password=dbPasswd, host=dbHost, port=dbPort, database=dbInstName)
curr = m_dbCon.cursor()
curr.execute('truncate table my_table')
count = curr.rowcount
curr.close()
Run Code Online (Sandbox Code Playgroud)

正如我所说,不会引发异常,计数-1

我找不到这个问题的任何解释。

我究竟做错了什么?

小智 5

你必须使用:

conn.commit()

为了永久保存对数据库所做的更改。

检查这个:https: //www.postgresqltutorial.com/postgresql-python/delete/


GMi*_*ael 1

正如 Jeremy 在评论中所述,在 TRUNCATE 的情况下应忽略rowcount 。

我认为没有例外就意味着声明成功。至少,在这个例子中是这样。