在数据库Python中插入列表列表

Posted

技术标签:

【中文标题】在数据库Python中插入列表列表【英文标题】:Insert List of lists in a database Python 【发布时间】:2020-12-12 12:51:31 【问题描述】:

我正在尝试在数据库中插入列表列表,但出现此错误“ cursor.execute('INSERT INTO Test VALUES(?, ?, ?)',list2) sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 3,提供了 200 个。” 在我的列表中有 201 个列表

import sqlite3
import csv
import pandas as pd
def Load():
    list1 = []
    comparar = []
    conexion = sqlite3.connect("Pruebas")
    cursor = conexion.cursor()
    cursor.execute('CREATE TABLE IF NOT EXISTS Test ( "id" INT NOT NULL , "User" TEXT NOT NULL , "Followed" INT NOT NULL , PRIMARY KEY (id))')
    cursor.execute("SELECT * FROM Test")
    list1 = cursor.fetchall()
    #print(data)    
    data = pd.read_csv(r'J:\\Proyectos y Trabajos\\Python\\Bot Instagram Follow\\Terminado BR\\Test.csv',delimiter=';')
    tuples = [tuple(x) for x in data.values]
    
    for i in tuples:
        if i not in list1:
            list1.append(i)
    list2 = [list(elem) for elem in list1]
    
    cursor.execute("DELETE FROM Test") 
    conexion.commit() 
    cursor.execute('INSERT INTO Test VALUES(?, ?, ?)',list2)
    conexion.commit() 
    conexion.close()
Load()

【问题讨论】:

试试cursor.execute('INSERT INTO Test VALUES(?, ?, ?)',(list2,)) 让我知道,但你也可以说print(list2) 并将其包含在Q中 VALUES(?, ?, ?) 表示您正在尝试插入三个值。 list2 是否正好有三个值? 我现在收到此错误:文件“j:/Proyectos y Trabajos/Python/Bot Instagram Follow/Terminado BR/app.py”,第 23 行,在 Load cursor.execute('INSERT INTO Test VALUES(?, ?, ?)',(list2,)) sqlite3.ProgrammingError: 提供的绑定数量不正确。当前语句使用 3,并且提供了 1。 List2 是 201 个列表的列表,每个列表中都有 3 个值,例如 '[201, 'rodrigo_petrizzo', 0]' 这不是你插入它的方式。一种方法是遍历列表并单独插入每一部分。 【参考方案1】:

遍历list2并对每个子列表中的值执行插入:

for sublist in list2:
    cursor.execute('INSERT INTO Test VALUES(?, ?, ?)', sublist)
connexion.commit()

【讨论】:

不应该是(sublist,)吗? @CoolCloud 不,我不这么认为。 sublist, 是一个值的序列,但是你需要一个三个值的序列来匹配三个占位符标记。 哦,是的,你说得有道理:D

以上是关于在数据库Python中插入列表列表的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 将嵌套列表插入 mysql 数据库

将 Python 列表(JSON 或其他)插入 MySQL 数据库

使用Python将列表插入我的数据库[重复]

Python基础-python数据类型之列表

python列表(list)+索引切片+修改+插入+删除+range函数生成整数列表对象

python中如何将列表插入数据库?求大佬指教 (简单一点的)