Я не могу понять, что не так со следующим кодом, {{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 (не экспресс-база данных).
Используя "НАБОР NOCOUNT НА" значении наверху сценария не решит проблему.
На моем случае, мой сценарий вызывал проблему и избавлялся от него, заставил Python с PyODBC работать снова. Эта строка просто читает:
Use DatabaseName;
Hope это помогает кому-то.