【问题标题】:Python DELETE mysql/mariadb with a python variable not workingPython DELETE mysql/mariadb 与 python 变量不起作用
【发布时间】:2018-11-15 22:26:02
【问题描述】:

我正在尝试按照下面帖子中的描述做一些事情,我使用基本的 python 程序简化了这一点,而不是使用烧瓶,只是为了证明我的概念,但我遇到了一些问题。

flask_mysqldb Delete FROM variable table

我的代码如下;

import mysql.connector as mariadb

new = 'ksk'
mariadb_connection = mariadb.connect(user='root', password='mypwd', 
database='customers')
cursor = mariadb_connection.cursor()

cursor.execute("DELETE FROM customer_info WHERE name = %s" % (new))

mariadb_connection.commit()
print('its gone')

这会在我的表格中抛出一个错误,

"unknown column 'ksk' in where clause" 

这不是真的,我可以看到名称为 ksk 的行。

进一步证明这一点,如果我将删除语句更改为:

cursor.execute("DELETE FROM customer_info WHERE name = 'ksk'

行 ksk 被成功删除。我哪里错了?

【问题讨论】:

  • 简答:使用逗号而不是百分比。
  • 试过这个,它抛出一个字符串不可调用的错误。出于某种原因使用 SELECT 功能而不是 DELETE 功能时,逗号方法是否有效?
  • 您的字符串没有被转义/引用。它被视为列名。
  • 请问您能告诉我如何纠正吗?放 new = 'ksk' 不合适吗?还是我需要在我的 DELETE 语句中引用为“新”?
  • @PrimitiveSource - 由于您只有一个项目,因此您需要一个额外的逗号:(new,) 使其成为“元组”。

标签: python mysql mariadb


【解决方案1】:

https://pynative.com/python-mysql-execute-parameterized-query-using-prepared-statement/ --

然后我们在输入 tuple 中按顺序添加这两列值,并通过 SQL 更新查询和输入元组 t0 cursor.execute() 函数,记住元组按占位符的顺序包含用户数据.

CURSOR 的 execute() 方法采用可选的第二个参数,其中包含数据值列表。列表中的每个条目都必须采用元组格式才能与语句中的参数标记相关联。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-12
    • 2021-09-18
    • 2016-12-30
    • 2013-10-05
    • 2015-10-13
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    相关资源
    最近更新 更多