SQLite 3 python

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 =

我正在使用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()

即使新行已经存在,也会不断添加新行。 在不存在的地方使用选择相同的条目 你的陈述可以有这样的形式

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。操作错误:接近位置:语法错误编辑应该已修复它。