我有一个包含一个表(学生)的数据库(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字典和数据库中删除该学生。
答案 0 :(得分:2)
对于连接,大多数SQL实现使用' ||'运营商。请参阅SQLite docs。
c.execute("DELETE FROM Students WHERE (FName || ' ' || LName = ?", (selection,))
答案 1 :(得分:0)
Working with names is difficult但我认为我过分思考你的问题。假设您只想查询两个字段,可以将名称拆分为first_name
和last_name
,并从满足该组合的数据库中删除。
selection = "John Doe"
first_name, last_name = selection.split()
query = """
DELETE FROM Students
WHERE FName = ? AND LName = ?
"""
c.execute(query, (first_name, last_name))
conn.commit()