提问者:小点点

程序退出时删除MySQL行


我正在使用Python和MySQLdb向数据库中添加行。似乎当我的脚本退出时,行会被删除。在脚本退出之前,我的最后一行在表上执行“select*”,这显示了我的一行。当我重新运行脚本时,第一行(在打开连接之后)执行相同的“select*”并返回零结果。我在这里真的是不知所措。我已经在这方面工作了大约2个小时,不能理解什么可以访问我的数据库。

此外,在运行脚本之间,我从终端手动运行“select*”,结果为零。

如果我手动从终端添加一行,它似乎会持续。

要插入行的查询:

cursor.execute("INSERT INTO sessions(username, id, ip) VALUES (%s, %s, %s)", (username, SessionID, IP]))

我用来检查数据的查询:

cursor.execute("select * from sessions")
print cursor.fetchall()

这将显示程序退出之前的行,然后在程序再次运行时不显示任何内容。

事先谢谢你的帮助。


共2个答案

匿名用户

看来您需要在执行查询后connection.commit()更改(将connection替换为DB connection变量)。

http://docs.python.org/library/sqlite3.html

connection.commit():此方法提交当前事务。如果不调用此方法,则自上次调用commit()以来所做的任何操作都无法从其他数据库连接中看到。如果您想知道为什么没有看到已写入数据库的数据,请检查您没有忘记调用此方法。

匿名用户

检查另一个问题:Python MySQLdb更新查询失败

您可以找到一些关于如何提交、如何使用autocommit进行连接等的示例。