我有一个大型数据库,我使用python中的sql查询将数据写入csv文件。在sql数据库中,每一行都是一个手指ID的一系列空间信息。我可以对查询进行参数化,以获取信息并编写每个手指所需的文件。但是,问题出现在创建一个函数for循环时,该循环对列表中所有索引的每个ID进行迭代。你知道吗
INDEX = ([44,48,50,55,56,57], [49,54,57,61,62,64])
FINGER = ('rt100', 'rt101')
d = {}
newdf = {}
for Y in FINGER:
for X in INDEX:
for x in X:
d[x] = pd.read_sql ("SELECT x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UTS_7_fingerprints where finger like ? and ind = ?", conn, params=(Y,x))
newdf[Y] = pd.concat(d)
上面的脚本运行sql查询并成功地创建了连接数据帧的字典。但是,对于每个FINGER值,它都会遍历整个索引列表。你知道吗
像这样:
{'rt100': finger ind ... CAST( (direction*180/3.142)as INT) CAST(quality*100 as INT)
44 0 rt100 44 ... 281 93
48 0 rt100 48 ... 303 32
49 0 rt100 49 ... 281 13
50 0 rt100 50 ... 123 82
54 0 rt100 54 ... 281 14
55 0 rt100 55 ... 314 67
56 0 rt100 56 ... 123 88
57 0 rt100 57 ... 314 71
61 0 rt100 61 ... 326 11
这是一个手指值的示例。我需要它对'rt100'只迭代[44,48,50,55,56,57],对'rt101'只迭代[49,54,57,61,62,64]。目前它正在迭代索引中的所有值。 实际上,我有更多类似的通信,因此需要一个接受这些参数的查询。你知道吗
更具体地说,我正在寻找一种方法来限制此循环的运行方式,以便为每个手指和索引编写每个查询,以分离如下所示的.csv文件:
372,402,281,83
394,303,303,97
415,422,123,86
458,328,292,95
464,487,112,96
483,389,303,95
每行都是信息:
'x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT'
每个手指内的每个食指。你知道吗
问题在于:
它是由这个循环引起的:
在这种情况下,将对来自
FINGER
和INDEX
的值的所有组合执行whatever
。如果每个都有N
值,则whatever
行执行N*N
次。你知道吗但是您希望它只对其中一些执行,即给定
FINGER = [f1, f2, ..., fN]
和INDEX = [i1, i2, ..., iN]
值N
、(f1, i1)
、(f2, i2)
、^{。。。,(fN, iN)
。你知道吗为此,请更改循环:
相关问题 更多 >
编程相关推荐