ВЫВОД В файл csv - SQL Anywhere с использованием pyodbc дает ошибку

Я использую следующий запрос с pyodbc:

def generiere():
    query = """SELECT ArtikelNr, Artikel_Bezeichnung, Artikel_Menge, System_created, Summen_netto, Summen_brutto, Summen_ust_gesamt FROM FK_AuftragPos;OUTPUT TO 'C:/Users/User/Documents/Software/Statistik/test.csv' FORMAT TEXT QUOTE '"' DELIMITED BY ';' WITH COLUMN NAMES"""
    cursor.execute(query)

Когда я использую этот запрос в Interactive SQL, все работает. Но когда я пытаюсь использовать его в своей программе Python, я получаю следующую ошибку:

Синтаксическая ошибка в 'OUTPUT'... (-131) (SQLExecDirectW)

Я просто не знаю, что я делаю неправильно.

Изменить: предоставлено больше кода и информации.


person user3445881    schedule 20.11.2014    source источник
comment
Убедитесь, что вы можете подключиться, выполнив оператор select и прочитав результаты в python. Кроме того, добавьте в свой фрагмент кода части, в которых вы выполняете оператор (и фиксируете, если делаете).   -  person philshem    schedule 20.11.2014
comment
Я добавил функцию, которую использую для выполнения запроса. Да, я могу подключиться к базе данных и прочитать результаты в Python.   -  person user3445881    schedule 20.11.2014


Ответы (1)


последняя часть вашего запроса ;OUTPUT TO 'C:/Users/User/Documents/Software/Statistik/test.csv' FORMAT TEXT QUOTE '"' DELIMITED BY ';' WITH COLUMN NAMES не является допустимым синтаксисом для запроса

это может быть допустимо в интерактивной консоли для db, но тогда это команды из интерактивной консоли

person Joram    schedule 20.11.2014
comment
вы должны выполнить синтаксический анализ набора результатов и написать файл самостоятельно на python - person Joram; 20.11.2014
comment
Это довольно большой набор данных (около 300 Мб). Я обнаружил, что быстрее позволить базе данных выводить результаты в файл csv. Это просто синтаксическая ошибка. Это должно быть легко поправимо. - person user3445881; 21.11.2014
comment
description = cursor.description дает вам имена столбцов, а result_set = cursor.fetchall() дает вам данные, поэтому result_set[0][0] является первым столбцом первой строки. - person Joram; 24.11.2014
comment
если вы хотите, чтобы вывод анализировался интерактивной консолью, вы можете вызвать его с помощью subprocess.call - person Joram; 25.11.2014