如何更改mySQL查询结果中的行?

时间:2013-03-20 15:40:15

标签: python mysql cursor

我想在Python中迭代一堆mySQL行,在处理完每一行后,改变它:

cursor.execute("SELECT someNonUniqueColumn,hasBeenProccessed 
                FROM myTable WHERE hasBeenProcessed = 0")
for row in cursor:
    # use someNonUniqueColumn for something...
    ...
    # set "hasBeenProccessed" to 1

我想避免丑陋: - 每次处理记录时都必须执行另一个SQL查询,或者 - 当我处理它们时,用一行ID填充数组 (这两者都需要我在表中添加一个唯一的密钥)

那么,有没有办法“随时检查这些”?

2 个答案:

答案 0 :(得分:1)

不,没有办法改变行速。这有很多原因,其中之一是查询返回的值可能无法更新:思考计数,总和和其他聚合函数。

如果只进行非常少量的数据库交互,保存ID并发出复合update语句似乎是最好的。

如果您在程序中发出超过1-2个查询,请帮个忙,学习SQLAlchemy或Django ORM。两者都不是完全透明的,但要么节省大量的时间和调试痛苦。

答案 1 :(得分:0)

执行更改/处理后,为什么不运行查询

UPDATE myTable SET hasBeenProcessed = 1 WHERE hasBeenProcessed = 0

如果可以的话当然可以:)