在Postgres数据库中,变化似乎没有影响

2024-04-24 13:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

每当我运行与postgresql数据库交互的python脚本时,它们似乎没有效果。我没有得到任何错误,代码中的所有内容似乎都执行得很好(例如,DB操作后的打印结果如预期所示),但是当我稍后查看数据库时,我没有看到代码运行的任何证据。例如,我有以下代码:

def testDeleteWins():
    deleteWins()
    print "Old wins deleted."

def deleteWins():
    DB = connect()
    c = DB.cursor()
    c.execute("DELETE FROM wins;")
    print "Task Done!"

def connect()
    print"Connected"
    return psycopg2.connect("dbname=project")

如果我运行testDeleteWins(),我会看到“任务完成!”打印出来,但没有一条记录实际从wins表中删除。我需要做什么才能使更改在数据库中生效?你知道吗


Tags: 代码脚本数据库内容dbpostgresqldefconnect
1条回答
网友
1楼 · 发布于 2024-04-24 13:20:52

默认情况下,psycopg2具有不自动提交的cursor。在deleteWins中,在c.execute之后添加DB.commit()deleteWins看起来像:

def deleteWins():
    DB = connect()
    c = DB.cursor()
    c.execute("DELETE FROM wins;")
    DB.commit()
    print "Task Done!"

相关问题 更多 >