MySQLdb / Python / LocalHost - 查询运行没有错误但没有结果

时间:2013-06-22 17:08:51

标签: python mysql localhost mysql-python

我希望有人可以帮助我?我正在尝试使用Python 2.7和MySQLdb库填充MySQL数据库。我已经在下面编写了示例脚本,但无论我尝试什么,我都无法让它工作。

代码运行没有错误(它在我运行代码时打印'完成'但是就是这样)当我在phpMyAdmin中直接尝试查询时它工作正常,由于某种原因我不能让它工作起来在Python中。

我错过了什么吗?我需要在phpMyAdmin中激活它以使其工作吗?我一直在寻找答案的大部分时间,当其他人有类似的问题,虽然他们往往会得到错误信息(我没有)。

import MySQLdb

# Define the database access details
DB_HOST = "localhost"
DB_USER = "username"
DB_PASSWORD = "secretpassword"
DB_NAME = "TestDatabase"

# Establish the connection to the database
db = MySQLdb.connect(
                     host=DB_HOST,
                     user=DB_USER,
                     passwd=DB_PASSWORD,
                     db=DB_NAME
                     )
cur = db.cursor()

Query = "INSERT INTO SearchResults ( `TimeStamp`, `SearchTerm`, `SearchResult`) VALUES ('2013-06-22 17:28:09', 'TestSearchTerm', 'Test Search Result');"
cur.execute(Query)

print"Done"

这是我第一次体验这一点,所以如果我忽略了一些明显的事情,请原谅我!任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

您可能必须commit()进行更改。


这是你的“第一次经历”的一些解释:

根据“数据库引擎”的功能,当您修改数据时,“外部世界”不会立即看到您的更改。简而言之,您的更改对您的数据库连接是“私密的”。

这是一个非常重要的功能。除此之外,这有利于您进行多次修改 - 并一次性“发布”它们。另一个好处是,如果在某些时候您认为修改无效,您可以“取消”它们而不会干扰您数据库的任何其他用户。

这样做的一个小缺点是,一旦准备好发布它们,就必须明确提交更改。否则,一旦连接关闭,它们就会消失。您还必须有机会设置“自动提交” - 即每次向数据库发出请求后都会有一个隐式提交。根据您的需要,这可能是一种选择。总结一下:

  • 将您的更改“发布”到数据库:使用db.commit()
  • “取消”对数据库的更改:使用db.rollback()或只是关闭连接而不提交,
  • 在每个请求后隐式提交:db.autocommit(True)

DBA和其他数据库专家可能会因为上述段落的过度简化而对我大喊大叫。但我希望这能帮助你理解发生了什么!