虽然我可以将mysql数据库更新为int,但是我不能输入字符串

时间:2018-07-07 22:22:29

标签: python mysql flask mysql-workbench

编辑=>解决问题: 我将查询更改为此,现在可以了,谢谢大家:

    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()

我为关注列尝试了几种数据类型,但是每个数据类型都返回相同的错误。

2 个答案:

答案 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))

请注意该值前后的单引号。

,顺便说一下。这样做是不安全的。使用带有绑定参数的准备好的语句。