我有一些变量需要插入数据库(PostGres)。 变量是4-D,每个变量都有以下属性:时间,等级,纬度,经度。
例如:
print(sulphate_aerosol[0][1][400][367])
>> 3.539193384838e-06
我有13个变量(现在!),我需要迭代每个变量,提取数据并将其插入到Postgres数据库中。
我能做到:
for i in datalength:
for j in latlenth:
for k in longlength:
for l in levellength:
insert(myVar[i][j][k][l])
但这可能比Python专家提出的一些更快的方法要慢。
我还认为将值存储在数组中并执行批量插入可能是个好主意,如here所示,因此对此的任何建议也将受到赞赏。
答案 0 :(得分:1)
如果您无法改进insert(..)
以使其与批量数据一起使用,那么时间复杂度当然会保持不变相同:你不能迭代完整的4d数组而不迭代它们中的每个元素。
然而,您可以稍微改善常数因子,因为在这里,对于您执行的每个元素:
myVar[i][j][j][l]
因此四个索引查找。这些都不是必需的,因为在内循环中,您知道myVar[i][j][j]
将始终保持不变。因此,您可以通过以下方式短路访问:
for myvar_i in myvar:
for myvar_ij in myvar_i:
for myvar_ijk in myvar_ij:
for myvar_ijkl in myvar_ijk:
insert(myVarijkl)
对于批量插入,您确实可以先构建一个列表。类似的东西:
result = []
for myvar_i in myvar:
for myvar_ij in myvar_i:
for myvar_ijk in myvar_ij:
result += myvar_ijk
然后用:
来调用它bulk_insert(result)