Python MySQL 更新语句

51 投票
5 回答
176366 浏览
提问于 2025-04-15 13:45

我正在尝试正确写一个Python的MYSQL更新语句(带变量):

cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)   

有没有人知道我哪里出错了?

5 个回答

23

这里是正确的方法:

import MySQLdb

if __name__ == '__main__':
    connect = MySQLdb.connect(host="localhost", port=3306,
                              user="xxx", passwd="xxx", db='xxx', charset='utf8')

    cursor = connect.cursor()

    cursor.execute("""
       UPDATE tblTableName
       SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
       WHERE Server=%s
    """, (Year, Month, Day, Hour, Minute, ServerID))

    connect.commit()
    connect.close()

附注:别忘了 connect.commit(),否则它就不会生效哦。

54

你的语法完全错了:

cursor.execute ("""
   UPDATE tblTableName
   SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
   WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))

想了解更多,可以查看文档

86

应该是这样的:

cursor.execute ("""
   UPDATE tblTableName
   SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
   WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))

也可以通过基本的字符串处理来实现这个功能,

cursor.execute ("UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server='%s' " % (Year, Month, Day, Hour, Minute, ServerID))

但是这种方法不推荐,因为它容易受到SQL注入攻击。其实有更简单(而且更安全)的方法来做到这一点,正确的方法tm。一定要正确地做。

你唯一需要注意的是,有些数据库的处理方式可能不一样(比如SQLite)。

撰写回答