yangyue012345 2023-09-02 09:46 采纳率: 20%
浏览 8
已结题

python一维数组和二维数组插入数据库

我现在有一个二维数组,一个一维数组(对应数据库中的一列),我想要分别将他们插入数据库,目前二维数据可以插入,但是一维数组插入的时候不是从数据库的第一行开始插入,而是从尾部插入。下面是相关代码,不知道要怎么修改了

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("成功")

img

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-09-02 09:57
    关注

    cur.execute('INSERT INTO lndz (datetime) VALUES (?)', (item,))
    你这个是把日期全部插入到datatime列里面了
    如果你希望分别插入data time后面那些,你得模仿上面一行sql那样去写。
    你可能理解错了“插入”
    对于数据库来说,添加一行数据才叫做“插入”
    而如果是将数据添加到现有行的空白处,这个叫做“修改”(UPDATE)
    而且,为了更新到正确的行,你的表设计也不对,你得先添加一列作为主键(唯一列)
    然后才能去更新某一行。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月5日
  • 创建了问题 9月2日