在python中构造MySQL查询的正确方法?

时间:2010-11-09 15:56:26

标签: python mysql

从php开始使用python上周后,我想知道构建MySQL查询的最佳方法是什么。

我正在使用Python的MySQLdb模块。

在做了一些研究之后,似乎最好的方法类似于下面的代码:

def updateEmployee(employee):
  try:
      cursor = db.cursor()
      cursor.execute("""
          UPDATE `employee2` 
          SET `employeeID`=%s, `parentNameN`=%s, `firstName`=%s, `lastName`=%s,     `title`=%s, `room`=%s, `locCode`=%s, `posOrg`=%s
          WHERE  `employee2`.`nameN`=%s 
      """, (employee["employeeID"], employee["parentNameN"], employee["firstName"],     employee["lastName"], employee["title"], employee["room"], employee["locCode"], employee["posOrg"], employee["nameN"]))
      db.commit()
      print employee["nameN"]+" updated"
  except MySQLdb.Error, e:
      print "Error %d: %s" % (e.args[0], e.args[1])
      sys.exit(1)

这一切都很棒,除非,当我遇到这样的错误时,例如“错误1064:你的SQL语法中有错误:...”这很好,它说我的查询在语法上是不正确的。

所以我得到了那个部分,但是如何查看有问题的查询呢?有没有办法可以在cursor.execute之外构造这个查询,这样在我得到通用错误消息的情况下,我至少可以做一个“打印查询”?

1 个答案:

答案 0 :(得分:1)

您的查询中不需要反引号。错误就在这里`posOrg`:%s

SET `employeeID`=%s, `parentNameN`=%s, `firstName`=%s, `lastName`=%s,
 `title`=%s, `room`=%s, `locCode`=%s, **`posOrg`:%s**