Python 2.7 循环上的参数化SQL查询未正确更新
我有一个循环上运行的sql查询。有两个值FINGER和index_str都需要并行更新Python 2.7 循环上的参数化SQL查询未正确更新,python-2.7,sqlite,Python 2.7,Sqlite,我有一个循环上运行的sql查询。有两个值FINGER和index_str都需要并行更新 FINGER: (numpy array) [['1012_8'] ['10214_5'] ['10409_9'] 以上是前3个例子。在现实中,每一个都有1000多个 for i in range(len(FINGER)): print i print FINGER[i] for x in index_str[i]: yy = FINGER[i][0]
FINGER: (numpy array)
[['1012_8']
['10214_5']
['10409_9']
以上是前3个例子。在现实中,每一个都有1000多个
for i in range(len(FINGER)):
print i
print FINGER[i]
for x in index_str[i]:
yy = FINGER[i][0]
#print range(len(FINGER))
index_str = str(x)
query = "SELECT finger, ind, x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UNIL_fingerprints where finger = '" + yy + "' and ind IN (" + index_str + ") order by ind "
print query
c.execute(query)
rows = c.fetchall()
print rows
上面是有问题的循环和查询
到目前为止,循环只针对第一个手指的值遍历index_str的所有值。为了详细说明,前3个示例的查询更新如下
SELECT finger, ind, x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UNIL_fingerprints where finger = '1012_8' and ind IN (14,38,51,65,84,85) order by ind
SELECT finger, ind, x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UNIL_fingerprints where finger = '1012_8' and ind IN (3,34,58,65,66,75) order by ind
SELECT finger, ind, x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UNIL_fingerprints where finger = '1012_8' and ind IN (3,15,68,70,80,82) order by ind
而在上面的第二个和第三个查询中,“1012_8”应分别为“10214_5”和“10409_9”
任何关于如何正确更新此内容的想法都会很有帮助。您想要zip()
:
而且你真的很想学习和(除非你不介意被黑客攻击)。你想要zip()
:
另外,你真的很想学习和(除非你不介意被黑客攻击)。试试这个:“选择finger,ind,x,y,CAST((direction*180/3.142)as INT),CAST(quality*100 as INT)从UNIL_指纹中,其中finger='“+yy+”,ind IN(“+index_str+”)按ind的顺序,或者你可以尝试“选择finger,ind,x,y,CAST((方向*180/3.142)为INT),从finger='{0}'的UNIL_指纹中选择CAST(质量*100为INT),然后按ind({1}')顺序选择Indger(格式)(yy,index_str)尝试以下操作:“选择finger,ind,x,y,CAST((方向*180/3.142)为INT),从finger=''+yy+'的UNIL_指纹中选择CAST(质量*100为INT)和ind('“+index_str+”)按ind排序”或者您可以尝试“选择finger,ind,x,y,CAST((方向*180/3.142)作为INT),CAST(质量*100作为INT)从UNIL_指纹中,其中finger='{0}'和ind按ind('{1}')排序”。格式(yy,index_str)
SELECT finger, ind, x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UNIL_fingerprints where finger = '1012_8' and ind IN (14,38,51,65,84,85) order by ind
SELECT finger, ind, x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UNIL_fingerprints where finger = '1012_8' and ind IN (3,34,58,65,66,75) order by ind
SELECT finger, ind, x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UNIL_fingerprints where finger = '1012_8' and ind IN (3,15,68,70,80,82) order by ind
for finger, indexes in zip(FINGERS, index_str):
print("fingers : {}- indexes: {}".format(finger, indexes))