我正在使用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。
取决于项目的最终目标是什么。