我有一个列表,len(list)
说199
但它可以在运行时以与我的表的列增加相同的速度增加。
我想在sqlite中的表中插入这些元素。
到目前为止代码:
conn.execute('INSERT INTO Financial_data VALUES (?)',list)
我已经阅读了文档和其他s.o问题,但我不能在那里放置199个问号,即使我可以,也许在运行20秒后会有200列,那么呢?
我想要做的是用数据填充行的所有列
在上面的代码之前,我有这个,它插入了sql数据库中存在的每个头的列表元素,如果我的其他源没有其中一个头的值,则它附加None
值 所以我可以一次转储整行。
if header in lista_header_tabel:
lista_valori.append(valoare)
else:
lista_valori.append(None)
这种情况正在发生,因为程序的插入部分非常慢,我不知道为什么。我试图将它们包含在conn.execute("begin")
内,它可以提高性能,但是......
难道sqlite能够处理200列的20-50K行的大小吗?在这一点上,使用shelve或json比使用sqlite有更好的性能。 我哪里错了?
当前工作解决方案但在2k行后缓慢:
conn.execute("begin")
for celula in rand:
if sheet_results.cell(row=1,column=celula.col_idx).value in lista_header_tabel and celula.value!=None:
header_coloana=sheet_results.cell(row=1,column=celula.col_idx).value
valoare_aferenta=str(celula.value).replace('"','^')
nume_fara_ghilimele=str(rand[1].value).replace('"','^')
query='UPDATE Financial_data SET "' + header_coloana + '" = "' + valoare_aferenta + '" WHERE `Company name`="' + nume_fara_ghilimele + '"'
#print(query)
conn.execute(query)
conn.commit()