这是我创建表格的方式:
--shortstat
这是我的sqlite插入方法:
c.execute("""CREATE TABLE Campaigns (
day text,
firstname text,
lastname, text)""")
我想要的是此插入函数来覆盖现有记录。
例如,如果我已经插入:
def insert_campaign(Day, FirstName, LastName):
with conn:
c.execute("INSERT INTO Campaigns VALUES (:day, :firstname, :lastname)",
{'day':Day,'firstname':FirstName, 'lastname':LastName})
我要插入:
3/25/2019 | John | Doe
3/26/2019 | Jane | Doe
3/27/2019 | Bob | Dylan
我希望结果是:
3/26/2019 | Jane | Doe
3/27/2019 | Bob | Dylan
3/28/2019 | Greg | Rogers
现在,它正在添加所有内容,导致6行重复。
答案 0 :(得分:1)
首先,如果不想重复,则需要将所有三列的组合定义为唯一键或主键:
c.execute("""CREATE TABLE Campaigns (
day TEXT NOT NULL,
firstname TEXT NOT NULL,
lastname TEXT NOT NULL,
PRIMARY KEY (day, firstname, lastname))""")
然后,您可以使用replace
语句:
def insert_campaign(Day, FirstName, LastName):
with conn:
c.execute("REPLACE INTO Campaigns VALUES (:day, :firstname, :lastname)",
{'day':Day,'firstname':FirstName, 'lastname':LastName})