python - 使用 mysql python 模块更新 SQL 表

标签 python mysql mysql-connector-python

我正在尝试使用 python 的 mysql 连接器更新 SQL 表中单个单元格中的单个值。使用以下代码,我没有收到任何错误消息,但表也没有实际更新。我尝试更新的单元格的值有时为空,有时为 NULL,有时包含字符串。这是我的代码:

query = ("UPDATE data_set SET %s = '%s' WHERE id = %s") % (column_to_change, change_to_value, row_id)

我做错了什么?

编辑:感谢您到目前为止的回复。我认为周围的代码不存在任何功能问题(除了 SQL 注入(inject)漏洞,我已经在此处和其他地方修复了该漏洞),因为我一直在使用不同的查询有效地执行类似的代码。现在这是我的代码:

column_to_change = "column2"
change_to_value = "james"
id = "1234"


cnx = mysql.connector.connect(user='user', password='password',
                          host='db.website.com',
                          database='database')
cursor = cnx.cursor()

query = ("UPDATE data_set SET %s = %s WHERE policy_key = %s")

cursor.execute(query, (column_to_change, change_to_value, id))

cursor.close()
cnx.close()

如果相关的话,我尝试插入的单元格格式为 VARCHAR(45)。当我在单元格上运行 SELECT 查询时,它返回格式如下的名称:(u'James',)

如果我设置change_to_value = "(u'James',)",我会收到以下错误消息:

mysql.connector.errors.ProgrammingError: 1064 (42000): 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行 ''column1' = '(u\'James\',)' WHERE id = '1234'' 附近使用的正确语法

最佳答案

确保您遵循所有步骤:

conn = pyodbc.connect("SERVER=my.server;DATABASE=my_database;UID=my_user;PWD=my_password;",ansi=True)

cursor = conn.cursor()

query = ("UPDATE data_set SET %s = '%s' WHERE id = %s") % (column_to_change, change_to_value, row_id)

cursor.execute(query)

并验证您传递给 .execute() 的 SQL 查询是否与您想要在数据库上运行的 SQL 查询相同

关于python - 使用 mysql python 模块更新 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40143431/

相关文章:

python - Spyder无法从Anaconda环境之一启动

mysql 使用 where 子句计算另一个表中的行

Python2.7 中的 MySQL 连接池无法按预期工作。连接池的 close() 函数面临问题

php - 从表中选择时间戳在 x 秒内的数据

python - mysql.connector.errors.ProgrammingError : 1064

python-3.x - 有没有办法将 mysql-connector-python 中的 'pool_reset_connection' 与 MariaDB 10.4.7 一起使用?

python - 列出给定起始目录的子目录中的所有文件

python - 大矩阵中的簇数

python - 湿度时间序列预测

java - 找不到适合 jdbc :mysql://localhost/的驱动程序