Python:SQLite插入行
我有100多行数据,如果每行都有一行用于插入表,那就太麻烦了。因此,我试图以某种方式加快将行插入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,
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
不是空的吗?