我现在有一个二维数组,一个一维数组(对应数据库中的一列),我想要分别将他们插入数据库,目前二维数据可以插入,但是一维数组插入的时候不是从数据库的第一行开始插入,而是从尾部插入。下面是相关代码,不知道要怎么修改了
def init_db(dbpath):
sql = '''
create table lndz
(id integer primary key autoincrement,
datetime date,
date date,
time text ,
dongjing numeric,
beiwei numeric,
zhenzhong text,
zhenji numeric
)
''' # 创建数据表
conn = sqlite3.connect(dbpath)
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
conn.close()
def savedb(datalist, dbpath):
init_db(dbpath)
conn = sqlite3.connect(dbpath)
cur = conn.cursor()
for i, row in enumerate(datalist):
cur.execute('INSERT INTO lndz (date, time, dongjing, beiwei,zhenzhong, zhenji) VALUES (?, ?, ?, ?, ?, ?)', row)
conn.commit()
cur.close()
conn.close()
def savetime(data1d, dbpath):
conn = sqlite3.connect(dbpath)
cur = conn.cursor()
for item in data1d:
cur.execute('INSERT INTO lndz (datetime) VALUES (?)', (item,))
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
datalist = shaixuan()
timelist = get_time()
dbpath = "lndz.db"
savedb(datalist, dbpath)
savetime(timelist, dbpath)
print("成功")
cur.execute('INSERT INTO lndz (datetime) VALUES (?)', (item,))
你这个是把日期全部插入到datatime列里面了
如果你希望分别插入data time后面那些,你得模仿上面一行sql那样去写。
你可能理解错了“插入”
对于数据库来说,添加一行数据才叫做“插入”
而如果是将数据添加到现有行的空白处,这个叫做“修改”(UPDATE)
而且,为了更新到正确的行,你的表设计也不对,你得先添加一列作为主键(唯一列)
然后才能去更新某一行。
【以下回答由 GPT 生成】
在代码中,一维数组是通过执行INSERT INTO lndz (datetime) VALUES (?)
语句插入到数据库的。该语句没有指定插入到哪一行,故默认插入到末尾。要使得一维数组从数据库的第一行开始插入,可以按照以下步骤进行修改:
def init_db(dbpath):
sql = """
create table lndz
(id integer primary key autoincrement,
datetime date,
date date,
time text ,
dongjing numeric,
beiwei numeric,
zhenzhong text,
zhenji numeric
)
"""
# 创建数据表
conn = sqlite3.connect(dbpath)
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
conn.close()
cur.execute('INSERT INTO lndz (datetime) VALUES (?)', (item,))
修改为cur.execute('INSERT INTO lndz (id, datetime) VALUES (?, ?)', (i+1, item))
。def savetime(data1d, dbpath):
conn = sqlite3.connect(dbpath)
cur = conn.cursor()
for i, item in enumerate(data1d):
cur.execute('INSERT INTO lndz (id, datetime) VALUES (?, ?)', (i+1, item))
conn.commit()
cur.close()
conn.close()
这样,一维数组将会从数据库的第一行开始插入。请注意,修改后的代码中,id的值是递增的,所以要确保数据库中的id列是连续自增的。
【相关推荐】