编辑=>解决问题: 我将查询更改为此,现在可以了,谢谢大家:
query_update = ("UPDATE comments SET label = '%s' WHERE id = %s"%(new_label, id))
我正在一个学校项目上,通过flask应用程序中的表单更新mysql数据库。
在运行查询时,将列更新为整数可以工作,但是当我的查询是字符串时却不能。
我只对mysql有点了解,而对mysql Workench则了解甚少。
预先感谢。
这是我的代码:
cur_update = cnx.cursor(buffered=True)
#working
query_update = ("UPDATE comments SET label = %s WHERE id = %s"%(1, id))
#working
query_update = ("UPDATE comments SET label = %s WHERE id = %s"%("1", id))
#not working
query_update = ("UPDATE comments SET label = %s WHERE id = %s"%("test", id))
#returing the following error
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'test'
in 'field list'
cur_update.execute(query_update)
cnx.commit()
cur_update.close()
cnx.close()
我为关注列尝试了几种数据类型,但是每个数据类型都返回相同的错误。
答案 0 :(得分:0)
SQL查询通常要求将字符串用单引号引起来。
您的UPDATE语句对此求值:
UPDATE comments SET label = test WHERE id = 1
由于test
不在引号中,因此SQL希望它成为列的名称。
在值周围加上引号,它将起作用:
query_update = ("UPDATE comments SET label = '%s' WHERE id = %s" % ("test", id))
答案 1 :(得分:-2)
只引用它。字符串值必须用SQL引用
query_update = ("UPDATE comments SET label = %s WHERE id = %s"%("'test'", id))
请注意该值前后的单引号。
,顺便说一下。这样做是不安全的。使用带有绑定参数的准备好的语句。