Python Sqlite3: INSERT INTO table VALUE(dictionary goes here)

后端 未结 9 584
野趣味
野趣味 2020-12-24 12:26

I would like to use a dictionary to insert values into a table, how would I do this?

import sqlite3

db = sqlite3.connect(\'local.db\')
cur = db.cursor()

c         


        
9条回答
  •  悲哀的现实
    2020-12-24 12:29

    I was having a similar problem and ended up with something not entirely unlike the following (Note - this is the OP's code with bits changed so that it works in the way they requested)-

    import sqlite3
    db = sqlite3.connect('local.db')
    cur = db.cursor()
    
    cur.execute('DROP TABLE IF EXISTS Media')
    
    cur.execute('''CREATE TABLE IF NOT EXISTS Media(
                    id INTEGER PRIMARY KEY, title TEXT, 
                    type TEXT,  genre TEXT,
                    onchapter INTEGER,  chapters INTEGER,
                    status TEXT
                    )''')
    
    
    values = {'title':'jack', 'type':None, 'genre':'Action',     'onchapter':None,'chapters':6,'status':'Ongoing'}
    
    #What would I Replace x with to allow a 
    #dictionary to connect to the values? 
    #cur.execute('INSERT INTO Media VALUES (NULL, x)'), values)
    # Added code.
    cur.execute('SELECT * FROM Media')
    colnames = cur.description
    list = [row[0] for row in cur.description]
    new_list = [values[i] for i in list if i in values.keys()]
    sql = "INSERT INTO Media VALUES ( NULL, "
    qmarks = ', '.join('?' * len(values))
    sql += qmarks + ")"
    cur.execute(sql, new_list)
    #db.commit() #<-Might be important.
    cur.execute('SELECT * FROM Media')
    media = cur.fetchone()
    print (media)
    

提交回复
热议问题