Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 循环上的参数化SQL查询未正确更新_Python 2.7_Sqlite - Fatal编程技术网

Python 2.7 循环上的参数化SQL查询未正确更新

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]

我有一个循环上运行的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]
        #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))