向sqlite3插入一个对象字典列表

时间:2017-12-21 01:45:22

标签: python python-3.x sqlite

我正在尝试将字典中的值列表插入sqlite3数据库。这是我的代码,当我运行代码时会出现此错误:

  

ProgrammingError:提供的绑定数量不正确。当前语句使用3,并且提供了2个。

import sqlite3
import re
import sys
import sqlite3
import pandas as pd

ListProduct={'nom_produit':[], 'prix':[], 'note':[]}

ListProduct['nom_produit'].append("Capuche Hip Hop Automne Hiver")
ListProduct['prix'].append('$3.9')
ListProduct['note'].append('4.5')
ListProduct['nom_produit'].append("Capuche Hip Hop Automne Hiver")
ListProduct['prix'].append('$12.9')
ListProduct['note'].append('4.8')

# Permet de se connecter à la base de données
conn = sqlite3.connect("mabase.db")   
    # Initialise le curseur
cur = conn.cursor()

    # Créer la table si elle n'existe pas

cur.execute("CREATE TABLE IF NOT EXISTS Produit (nom_product VARCHAR,price real, rating real)")

for key,values in ListProduct.items():

     cur.execute("""INSERT INTO Produit(nom_product, price,rating) VALUES(:nom_produit, :prix,:note)""", values)

    # Accepter les changements

cur.execute('SELECT * FROM Produit')
meida = cur.fetchone()
print(meida)
conn.commit()

    # Fermer la connexion
conn.close()

1 个答案:

答案 0 :(得分:0)

您正在使用3个命名占位符:<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/mome‌​nt.min.js"></script> :nom_produit:prix,这使:note期望sqlite3成为包含{{1}的字典},valuesnom_produit键。

但是,您的prix值是列表。

note的定义更改为:

values

然后,您甚至可以完全避免循环并切换到ListProduct

ListProduct= [
    {
        'nom_produit': "Capuche Hip Hop Automne Hiver",
        'prix': '$3.9',
        'note': '4.5'
    },
    {
        'nom_produit': "Capuche Hip Hop Automne Hiver",
        'prix': '$12.9',
        'note': '4.8'
    }
]