Ошибка последовательности функций (0) (SQLFetch) — SQL, Pyodbc

for _item in file_list:
    for col in cursor.execute("select column1,column2 from tbl"):
        if _item[0]==col.column1:
            #I also tried using a different cursor, still doesn't work
            var1 = cursor.execute("select column2 from tbl where column1=?", _item[0])
            for i in var1: var2 = i[0]
            try:
                cursor3.execute("insert into tbl(column2,column1,column3,column4) values (?,?,?,?)", (var1, _item[0],_item[1],_item[2]))
                cursor3.commit() 
            except IOError as error:
                print error

То, что я пытаюсь сделать, это сравнить значения в списке и значения из столбца 1, если они совпадают, получить значение из столбца 2 в той же строке, а затем добавить новую строку со значением из столбца 2, но разные значения для остальных .

Но, к сожалению, это не работает так, как я, при запуске кода выше python выдает ошибку:

Error: ('HY010', '[HY010] [Microsoft][ODBC Driver Manager] Function sequence error (0) (SQLFetch)')

В соответствии:

for columnrow in cursor.execute("select column1,column2 from tbl")

person Mario Geuenich    schedule 13.08.2013    source источник
comment
Строка, которая, по вашим словам, вызывает ошибку, не отображается в вашем примере кода. Также, кажется, опечатка: я думаю, что colum2 должно быть column2.   -  person mechanical_meat    schedule 13.08.2013
comment
Извините за это, исправил   -  person Mario Geuenich    schedule 13.08.2013


Ответы (1)


То, что вы делаете, в порядке и должно работать в соответствии с комментарием @ScottMorken к этому ответу.


Старый ответ:
Вам нужно получить результаты запроса, используя, например, .fetchall()
Поэтому вместо этой строки вы можете сделать:

for columnrow in cursor.execute("select column1,column2 from tbl").fetchall():
    ...
person mechanical_meat    schedule 13.08.2013
comment
не в соответствии с github.com/mkleehammer/pyodbc/wiki/Getting-started . На странице см.: Если вы собираетесь обрабатывать строки по одной, вы можете использовать сам курсор в качестве итератора. - person Scott Morken; 13.04.2017