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

unguejic  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(290)

这个问题在这里已经有答案了

如何在python的sql语句中使用变量(6个答案)
mysql参数化查询(7个答案)
两年前关门了。
编辑=>问题解决:我把我的查询改成了这个,现在它可以工作了。谢谢你,雅尔:

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

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

rbl8hiat

rbl8hiat1#

引用一下。字符串值必须在sql中引用

query_update = ("UPDATE comments SET label = %s WHERE id = %s"%("'test'", id))

请注意单引号前后的价值。
顺便说一下。这样做是不安全的。使用带绑定参数的准备语句。

zaqlnxep

zaqlnxep2#

sql查询通常要求字符串用单引号括起来。
update语句的计算结果如下:

UPDATE comments SET label = test WHERE id = 1

test 不在引号中,sql希望它是列的名称。
在值周围加上引号,它就会起作用:

query_update = ("UPDATE comments SET label = '%s' WHERE id = %s" % ("test", id))

相关问题