2015-05-30 58 views
1

每当我运行与postgresql数据库交互的python脚本时,它们似乎都没有效果。我没有得到任何错误,并且我的代码中的所有内容似乎都能正常执行(例如,数据库操作按预期显示后我的打印内容),但是当我稍后查看数据库时,看不到任何证据代码运行。例如,我有以下代码:更改似乎没有在Postgres 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表中删除。我需要做些什么才能让更改在数据库中生效?

回答

1

默认psycopg2cursor的不自动提交。在deleteWins之后加DB.commit()c.executedeleteWins然后会看起来像:

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

谢谢,没有意识到它需要承诺,你可以请修改你的答案,但?你不应该从游标提交,而是从连接本身=> DB.commit()。甚至可能只是把最后的那个方法写出来供其他需要的人使用呢? – Bbit

+1

@Bbit好建议和更正,完成! –

相关问题