我正在使用Sqlite显示谁的地址是学校。这可以工作并创建一个表,但是下次运行代码时,它也会从上一次打印该表,因此在这种情况下,有3个人在学校“住”在第一次打印3个人的情况下,则是在下一次运行时它将每个名称打印两次(共6个),依此类推。我将如何更改此代码,以使每次运行该代码时都只创建一个表,而没有添加任何内容。
(在这种情况下,我希望结果始终只有3行)。

import sqlite3

conn = sqlite3.connect('dbtest.db')
c = conn.cursor()

param = "School"


def create_table():
    c.execute('CREATE TABLE IF NOT EXISTS myTestTable(name TEXT, age REAL, address TEXT)')

def data_entry():
    c.execute("INSERT INTO myTestTable VALUES('James', 45, 'School')")
    c.execute("INSERT INTO myTestTable VALUES('Jack', 15, 'School')")
    c.execute("INSERT INTO myTestTable VALUES('Jeff', 14, 'Home')")
    c.execute("INSERT INTO myTestTable VALUES('Bob', 14, 'School')")
    conn.commit()

def query1():
    c.execute("SELECT * FROM myTestTable WHERE address = ?",(param,))
    while True:
        row=c.fetchone()
        if row == None:
            break
        print(row)

    c.close()
    conn.close()

create_table()

data_entry()

query1()

最佳答案

如果您确实不希望重复数据,则可以在每次调用dbtest.db时将其删除,您可以使用“ DROP TABLE if EXISTS myTestTable”来每次删除dbtest.db中的表,也可以添加逻辑,仅在表为空时才调用data_entry。

取决于项目的最终目标是什么。

10-07 15:58