我试图从字典中插入值列表到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()
您正在使用3个命名占位符::nom_produit
,:prix
和:note
,这使得sqlite3
期望values
成为包含nom_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'
}
]
然后,您甚至可以完全避免循环并切换到executemany()
:
cur.executemany("""
INSERT INTO
Produit
(nom_product, price, rating)
VALUES
(:nom_produit, :prix, :note)
""", ListProduct)