Python SQLite3查询连接两个值

时间:2017-05-28 18:06:54

标签: python sqlite

我有一个包含一个表(学生)的数据库(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字典和数据库中删除该学生。

2 个答案:

答案 0 :(得分:2)

对于连接,大多数SQL实现使用' ||'运营商。请参阅SQLite docs

c.execute("DELETE FROM Students WHERE (FName || ' ' || LName = ?", (selection,))

答案 1 :(得分:0)

Working with names is difficult但我认为我过分思考你的问题。假设您只想查询两个字段,可以将名称拆分为first_namelast_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()