我正在尝试将字典中的值列表插入到sqlite3
数据库中。这是我的代码,运行代码时出现此错误:
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 3, and there are 2 supplied.
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
的定义更改为:然后,您甚至可以完全避免循环并切换到
executemany()
:相关问题 更多 >
编程相关推荐