0

我想在 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 填充数组(这两者都需要我添加一个唯一键到桌子上)

那么,有没有办法“在我走的时候检查这些”?

4

2 回答 2

1

不,没有办法及时更改行。造成这种情况的原因有很多,其中之一是查询返回的值可能不可更新:想想计数、总和和其他聚合函数。

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

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

于 2013-03-20T15:49:07.570 回答
0

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

UPDATE myTable SET hasBeenProcessed = 1 WHERE hasBeenProcessed = 0

如果这是可能的当然:)

于 2013-03-20T16:05:38.800 回答