当我执行以下代码时:
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
答案 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的回答中提到的那样维护两个游标。