SQLite 3 python
我正在使用Sqlite显示谁的地址是学校。这可以工作并创建一个表,但是下一次运行代码时,它也会打印上一次的表。因此,在这种情况下,3个人“住在”学校,第一次打印3个人,下一次运行时,它会打印每个名字,总共打印6个人,以此类推。如何更改此代码,以便每次运行代码时只创建一个表,而不向其中添加任何内容。 在这种情况下,我希望结果始终只有3行SQLite 3 python,python,python-3.x,sqlite,Python,Python 3.x,Sqlite,我正在使用Sqlite显示谁的地址是学校。这可以工作并创建一个表,但是下一次运行代码时,它也会打印上一次的表。因此,在这种情况下,3个人“住在”学校,第一次打印3个人,下一次运行时,它会打印每个名字,总共打印6个人,以此类推。如何更改此代码,以便每次运行代码时只创建一个表,而不向其中添加任何内容。 在这种情况下,我希望结果始终只有3行 import sqlite3 conn = sqlite3.connect('dbtest.db') c = conn.cursor() param =
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()
即使新行已经存在,也会不断添加新行。 在不存在的地方使用选择相同的条目 你的陈述可以有这样的形式
INSERT INTO myTestTable(name,age,address) SELECT 'James', 45, 'School' WHERE NOT EXISTS (SELECT 1 FROM myTestTable WHERE name ='james' AND age =45 AND address ='school')
这将搜索条目是否已存在,如果不存在,它将插入该条目
编辑:修改代码。应该已经解决了这个问题。如果确实不希望数据被复制,可以在每次调用文件dbtest.db时删除它,如果存在myTestTable,可以使用DROP TABLE每次删除dbtest.db中的表,或者可以添加逻辑,在该逻辑中,如果表为空,则只调用data\u条目
取决于项目的最终目标是什么。不要每次都调用create\u table和data\u entry。添加此项后,出现以下错误。回溯最近的调用最后一次:第33行,在数据输入第14行,在数据输入c.executeINSERT到myTestTable值'James',45,'School',如果不存在,请从myTestTable中选择1,其中name='James',age=45,address='School'sqlite3。操作错误:接近位置:语法错误编辑应该已修复它。