在循环中使用UPDATE

时间:2013-08-08 16:33:23

标签: sql ms-access python-2.7 pyodbc

当我执行以下代码时:

for acc_row in cursor.execute("select * from tabela1"):
    cursor.execute("UPDATE table_name SET column_name=? where column_name=?", ('some_value','some_value'))

我在引用包含for循环的行时收到以下错误:

ProgrammingError: No results. Previous SQL was not a query

for循环在没有update语句的情况下工作正常,反之亦然

软件:

Python 2.7
视窗
pyodbc 3.0.7
MS Access 2010的AccessDatabaseEngine

2 个答案:

答案 0 :(得分:2)

您依靠cursor.对象的状态来控制for循环,但是您正在循环中修改该对象(通过执行UPDATE语句)。您需要维护两个游标对象,一个用于控制循环,另一个用于执行UPDATE。

答案 1 :(得分:1)

如果您的结果集不大,则应该有效:

rows = cursor.execute('select * from tabela1').fetchall()
for acc_row in rows:
    cursor.execute('UPDATE table_name SET column_name=? where column_name=?', (acc_row.column1, acc_row.column2))

如果结果集太大而无法加载到内存中,请按照Gord Thompson的回答中提到的那样维护两个游标。