【问题标题】:compare an array to a values returned from mysql database using Python使用 Python 将数组与从 mysql 数据库返回的值进行比较
【发布时间】:2013-03-06 03:05:41
【问题描述】:

当我使用此脚本来获取数组 A 中的每个元素在数组 B 中重复的次数时,我会得到正确的结果

A = ['text1','text2','text3','text4']
B = ['text1','text2','text3','text4','text1','text2','text3','text4','text1','text2','text3','text4','text1','text2','text3','text4','text1','text2','text3','text4','text3','text4']
for c in A :
    countVar = 0
    for e in B :
        if c == e :
            countVar +=1

    print c     
    print countVar

但是当 B 数组在这种情况下是从 SQL 查询返回时,确实为第一个元素提取了正确的数字,在这种情况下是 text1,它为其他元素计数提取了 0。

cursor = db.cursor() 
cursor.execute("select * from Table")

A = ['text1','text2','text3','text4']

for element in A:
    #print element 

    for row in cursor.fetchall() :

        if row[0] == element :
            #Count
            countClient += 1
    print row
    print countClient
    countClient = 0

结果如下:知道我的表中有 text2 和 text3
text1
15
text2
0
text3
0
text4
0
有人知道为什么会这样吗?或建议另一种方法?我还在做其他计算,比如计算从 SQL 数组返回的值的 SUM 和 AVG,因为我正在处理一些数据。

提前致谢!

【问题讨论】:

    标签: python mysql


    【解决方案1】:

    我对@9​​87654321@ 的解读是fetchall() 在第一个循环之后不会返回任何内容。对于调试,您应该检查它是否真的在第二次(及以后)通过时进入了内部 for 循环。

    要解决此问题,只需对您的代码进行少量修改,您有几个我能想到的选项:

    • 循环使用fetchall,将其存储在一个新数组中,然后在您当前的代码中使用它。
    • 每次拨打execute
    • 重置光标指针。不确定这在 Python 中是否可行,但快速搜索没有发现任何问题。

    抱歉,我无法提供更多细节,但 Python 并不是我非常熟悉的语言。

    --

    对于第一个选项,类似于(伪代码):

    i = 0
    C = []    
    for row in cursor.fetchall() :
        c[i] = row[0]
        i += 1
    

    然后在你的内部循环中,执行 for el in C 而不是 for row in cursor.fetchall()

    【讨论】:

    • 非常感谢大卫的回复!!!你是对的,它不是第二次循环,你能建议另一种方法来替换 'fetchall()' 吗?再次感谢!!!
    • 查看我的最新编辑。这比试图将它挤进评论区更容易。
    • 你是对的,我只是想修改你的答案:) 我刚刚想到的,它工作得很好!你太棒了大卫!非常感谢!!!!
    • 您能解释一下您的想法吗:使用 fetchall 循环,将其存储在一个新数组中,然后在您当前的代码中使用它。因为这将更加正式,因为我正在处理数百万行。非常感谢!!!
    • 你是个好人!!!太感谢了!!!!!因为python不支持++所以我把它改成i +=1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多