Python MySQL 更新语句
我正在尝试正确写一个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)。