【发布时间】:2023-04-09 06:47:01
【问题描述】:
我有一个包含一个表 (Students) 的数据库 (student.db)。
学生中的每一行都包含(ID、FName、LName)。
有一个现有行 (0, John, Doe)。
我希望能够输入一个变量作为全名,在数据库中找到该名称,然后删除该行。
这是我想出的……但它似乎不起作用:
import sqlite3
conn = sqlite3.connect('student.db')
c = conn.cursor()
selection = "John Doe"
c.execute('DELETE FROM Students WHERE (FName + " " + LName =?', (selection,))
我没有收到错误消息。我猜那是因为它根本找不到任何匹配 WHERE 子句的条目。
有没有办法正确编写 WHERE 子句来合并感兴趣行中的多个值?
我对此很陌生,所以如果这是一个愚蠢的问题,我深表歉意。我正在尝试制作一个创建学生姓名 ListView 的 Kivy 应用程序。然后,您可以从列表中选择一个学生并单击“删除”以将该学生从 ListView 字典和数据库中删除。
【问题讨论】:
-
好吧,这里超级简单的方法就是将
John Doe分成两部分,并在查询中使用AND。这会让你越过第一个障碍,但我认为这可能会在以后引起问题,因为名称很难使用(有些人有一个名字,有些人可能有 5 个,等等)。在您的示例中,“John Doe”的真正来源是什么? -
您希望将所选内容拆分为
FName: Joe和LName: Doe,然后在您的查询中使用它吗? -
我不想拆分的唯一原因是你的名字可能像“Mary Ann”这样的名字......这可能会导致问题。 “John Doe”这个名字来自 python 字典。该词典当前设置为全名列表。我确定可以修改字典,但我试图按照我为 Kivy youtu.be/dxXsZKmD3Kk?list=PLGLfVvz_LVvTn3cK5e6LjhgGiSeVlIRwt 找到的教程进行修饰