Python:SQLite插入行

Python:SQLite插入行,python,python-3.x,sqlite,sql-insert,Python,Python 3.x,Sqlite,Sql Insert,我有100多行数据,如果每行都有一行用于插入表,那就太麻烦了。因此,我试图以某种方式加快将行插入sqlite数据库的速度。因此,我提出了以下建议: def insert_item(obj): with db: c.execute("INSERT INTO Database VALUES (\ :First, :Last, :Item1, :Item2)", {'First': obj.First,

我有100多行数据,如果每行都有一行用于插入表,那就太麻烦了。因此,我试图以某种方式加快将行插入sqlite数据库的速度。因此,我提出了以下建议:

def insert_item(obj):
    with db:
        c.execute("INSERT INTO Database VALUES (\
                   :First, :Last, :Item1, :Item2)",
                  {'First': obj.First,
                   'Last': obj.Last,
                   'Item1': obj.Item1,
                   'Item2': obj.Item2})

obj_1 = ('John', 'Doe', 4, 5)
obj_2 = ('Jane', 'Doe', 6, 8)
...
obj_106 = ('Johnathan', 'Doe', 9, 1)

d = {}
for x in range(1, 107):
    row = (d["obj_{0}".format(x)])
    insert_item(row)
但是,它返回此错误:

 row = (d["obj_{0}".format(x)])
KeyError: 'obj_1'
不确定出了什么问题,字符串返回了我想要的正确值,但函数不起作用


谢谢

您定义了一组元组,然后是一个空的
dict
,然后尝试访问所述空
dict
中的值。您要做的是将这些元组加载到
dict
(或
列表
)中以开始

d={obj_1 : ('John', 'Doe', 4, 5),
   obj_2 : ('Jane', 'Doe', 6, 8),
   ...
   obj_106 : ('Johnathan', 'Doe', 9, 1)}

for x in range(1, 107):
    row = (d["obj_{0}".format(x)])
    insert_item(row)
或者,甚至更好

d = [('John', 'Doe', 4, 5),
     ('Jane', 'Doe', 6, 8),
      ...
     ('Johnathan', 'Doe', 9, 1)]

for row in d:
    insert_item(row)

你真的应该仔细阅读如何使用元组,然后定义一组空的
dict
,然后尝试访问所述空
dict
中的值。您要做的是将这些元组加载到
dict
(或
列表
)中以开始

d={obj_1 : ('John', 'Doe', 4, 5),
   obj_2 : ('Jane', 'Doe', 6, 8),
   ...
   obj_106 : ('Johnathan', 'Doe', 9, 1)}

for x in range(1, 107):
    row = (d["obj_{0}".format(x)])
    insert_item(row)
或者,甚至更好

d = [('John', 'Doe', 4, 5),
     ('Jane', 'Doe', 6, 8),
      ...
     ('Johnathan', 'Doe', 9, 1)]

for row in d:
    insert_item(row)

您确实应该仔细阅读如何使用使用
executemany
进行批量插入。将所有对象作为
元组插入
列表
例如


使用
executemany
进行批量插入。将所有对象作为
元组插入
列表
例如


我找到了一种使用局部变量()循环插入的方法


这非常有效,只需手动键入范围。

我找到了一种方法,可以使用局部变量()循环插入


这非常有效,只是您需要手动输入范围。

在代码中查找“obj_1”的位置,字典
d
不是空的吗?在代码中查找“obj_1”的位置,字典
d
不是空的吗?