【问题标题】:MySQLdb / Python / LocalHost - Query runs without error but no resultMySQLdb / Python / LocalHost - 查询运行没有错误但没有结果
【发布时间】:2013-06-19 15:32:22
【问题描述】:

我希望有人可以帮助我吗?我正在尝试使用 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"

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

【问题讨论】:

标签: python mysql localhost mysql-python


【解决方案1】:

您可能必须commit()您的更改。


由于这是您的“第一次体验”,所以有一些解释:

根据您的“数据库引擎”的功能,当您修改数据时,您的更改不会立即对“外部世界”可见。粗略地说,您的更改对于您的数据库连接是“私有的”。

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

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

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

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

【讨论】:

  • 知道这将是一件小而愚蠢的事情。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2012-10-16
  • 2018-09-19
  • 2018-08-16
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
相关资源
最近更新 更多