MSSQL2008 - Pyodbc - Предыдущий SQL не был запросом

Я не могу понять, что не так со следующим кодом, {{1 }} Синтаксис В порядке (проверено с помощью SQL Management Studio), у меня есть доступ, как и должно, так что это тоже работает ... но по какой-то причине, как только я пытаюсь создать таблицу через PyODBC, она перестает работать.

import pyodbc

def SQL(QUERY, target = '...', DB = '...'):
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + target + DB+';UID=user;PWD=pass')
    cursor = cnxn.cursor()
    cursor.execute(QUERY)
    cpn = []

    for row in cursor:
        cpn.append(row)
    return cpn

print SQL("CREATE TABLE dbo.Approvals (ID SMALLINT NOT NULL IDENTITY PRIMARY KEY, HostName char(120));")

Не удается:

Traceback (most recent call last):
  File "test_sql.py", line 25, in <module>
    print SQL("CREATE TABLE dbo.Approvals (ID SMALLINT NOT NULL IDENTITY PRIMARY KEY, HostName char(120));")
  File "test_sql.py", line 20, in SQL
    for row in cursor:
pyodbc.ProgrammingError: No results.  Previous SQL was not a query.

Кто-нибудь знает, почему это так? У меня установлен драйвер "SQL Server" (по умолчанию), работающий под управлением Windows 7 в среде Windows 2008 SQL Server (не экспресс-база данных).

27
задан Torxed 13 October 2011 в 12:03
поделиться

1 ответ

Используя "НАБОР NOCOUNT НА" значении наверху сценария не решит проблему.

На моем случае, мой сценарий вызывал проблему и избавлялся от него, заставил Python с PyODBC работать снова. Эта строка просто читает:

Use DatabaseName;

Hope это помогает кому-то.

0
ответ дан 28 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: