Python: как вставить словарь в базу данных sqlite?

У меня есть база данных sqlite с таблицей со следующими столбцами:

id(int) , name(text) , dob(text) 

Я хочу вставить в него следующий словарь:

 {"id":"100","name":"xyz","dob":"12/12/12"} 

Клавиши слова – это имена столбцов. Как я могу это достичь?

4 Solutions collect form web for “Python: как вставить словарь в базу данных sqlite?”

Если посмотреть на документацию, вы можете добавить одну строку:

 c.execute("INSERT INTO stocks VALUES (?,?,?)", [dict["id"], dict["name"], dict["dob"]]) 

Или вы можете использовать список и добавить несколько строк за один раз:

 # Larger example that inserts many records at a time purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00), ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00), ('2006-04-06', 'SELL', 'IBM', 500, 53.00), ] c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases) 

Если, например, c = conn.cursor() , и ваш словарь называется dict и таблицей tablename , то вы можете написать

 c.execute('insert into tablename values (?,?,?)', [dict['id'], dict['name'], dict['dob']]) 

Который будет вставлять элементы словаря в таблицу по мере необходимости.

Вот способ, который сохраняет безопасность параметров. (Может потребоваться полировка в отделе tablename)

 def post_row(conn, tablename, rec): keys = ','.join(rec.keys()) question_marks = ','.join(list('?'*len(rec))) values = tuple(rec.values()) conn.execute('INSERT INTO '+tablename+' ('+keys+') VALUES ('+question_marks+')', values) row = {"id":"100","name":"xyz","dob":"12/12/12"} post_row(my_db, 'my_table', row) 

Согласно ответам Gareth, если вы используете MySQLdb вы можете использовать executemany и передать список значений, которые вы можете получить непосредственно из своего dict используя dict.values()

  • sqlite3.InterfaceError: параметр привязки ошибки 1 - возможно, неподдерживаемый тип
  • peewee - Определить модели отдельно от инициализации Database ()
  • django error 'слишком много значений для распаковки'
  • Импорт CSV-файлов в базу данных SQL с использованием SQLite в Python
  • В модуле sqlite3 Python, почему не может cursor.rowcount () указать мне количество строк, возвращаемых оператором select
  • Django: sqlite для dev, mysql для prod?
  • Ошибка Sqlite load_extension для пространственных объектов в Python
  • Python / SQLite сохраняет списки как двоичные файлы (blobs)
  • Python - лучший язык программирования в мире.