python - 如何使用“名称”而不是 id 从 SQLite 中删除记录?
问题描述
我在下面有一个代码,当我使用 Id 时,它使用“email_address”从数据库中删除记录,它删除得很好,但是当我将它切换到“email_address”时,它给了我一个 sqlite3.OperationalError。我有一个输入字段,用于存储将要删除的数据,并在下面作为“email_delete”传递。有谁知道如何修理它?这是包含错误消息的图像的链接
def removeEmail():
conn = sqlite3.connect("email.db")
c = conn.cursor()
if c.execute("DELETE from email WHERE email_address =(?)" + email_delete.get()):
deleted_email = Label(
root, text="You have been Unsubscribed from the mailing list"
)
deleted_email.grid(row=5, column=0)
else:
error_label = Label(root, text="There is no such record")
error_label.grid(row=5, column=0)
email_delete.delete(0, END)
conn.commit()
conn.close()
解决方案
您需要将替换查询中占位符的值作为第二个参数传递给,c.execute(...)
而不是将它们与查询字符串连接在一起:
代替
c.execute("DELETE from email WHERE email_address =(?)" + email_delete.get())
做
c.execute("DELETE from email WHERE email_address=?", (email_delete.get(),))
推荐阅读
- python - 如何将参数/参数传递给子任务集以及如何在一个任务函数中启动另一个任务集?
- ios - 模块'Core'和'UserInterface'之间的Xcode循环依赖
- spring-boot - spring aop @target 和 @within throw IllegalAccessError
- php - __DIR__ PHP 代码实现错误的主目录的问题
- facebook - facebook 广告间谍工具如何抓取数据?
- python - 如何用可调用的类对象回调处理程序替换 lambda 回调处理程序?
- python - 我该如何解决这个问题:AttributeError:模块'tensorflow_core.python.keras.api._v2.keras'没有属性'Dense'
- javascript - 我的机器人回复被标记为“显示其他回复......”
- ruby - 使用 search-tweets-ruby 进行身份验证(高级 API)
- sql - 超过 1 列的 string_agg 的唯一值