在 Python 的 SQL 语句中传递列名?

这是我写的代码


def edititem():

    edit_code = int(input("Enter  the product code of the item you would like to edit:"))

    edit_cat =  input("Enter the category of the item you would like to edit:")

    edit_val =  int(input("Enter the new value"))

    edit = """UPDATE products SET %s = %s where prod_code = %s"""

    cur.execute(edit,(edit_cat,edit_val,edit_code,))

    connector.commit()

这是我得到的错误:


mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' prod_code' = 1 where prod_code = 1231' at line 1

我一直无法弄清楚错误到底是什么,这将是一个很大的帮助。提前致谢。


凤凰求蛊
浏览 106回答 1
1回答

喵喔喔

您不能使用 SQL 参数来插入列名。您必须对这些部分使用经典的字符串格式。例如,以下是列的使用字符串格式cursor.execute("SELECT * FROM PacketManager WHERE {} = ?".format(filters[0]), (parameters[0],))还要注意验证允许的列名称的重要性,以确保不会发生注入。您还应该从此处查看示例 -在 SQL 查询中使用 Python 列表获取列名
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python