Я пытаюсь создать резервную копию моей базы данных с помощью pyodbc.Резервное копирование базы данных MS SQL с pyodbc
Следующий код SQL был проверен и хорошо работал непосредственно в среде SQL Server Management Студия
DBCC SHRINKFILE(MyDB_v0_log, 100)
GO
BACKUP DATABASE comparables
TO DISK = N'D:\MSSQL\BACKUP\MyDB_v0_noFSD.bak' WITH NOFORMAT
, INIT
, NAME = N'backup_MyDB_v0_noFSD.bak', SKIP, REWIND, NOUNLOAD
, STATS = 10
И ниже код, что я пробовал в Python
conn = pyodbc.connect("driver={SQL Server};server=MyServer;database=MyDB;trusted_connection=true")
cursor = conn.cursor()
SQL_command = """
DBCC SHRINKFILE(comparables_v0_log, 100)
BACKUP DATABASE MyDB
TO DISK = N'D:\MSSQL\BACKUP\MyDB_v0_noFSD.bak' WITH NOFORMAT
, INIT
, NAME = N'backup_MyDB_v0_noFSD.bak', SKIP, REWIND, NOUNLOAD
, STATS = 10
"""
cursor.execute(SQL_command)
cursor.commit()
Однако выше код генерирует ошибку:
pyodbc.Error: ('HY007', '[HY007] [Microsoft][ODBC SQL Server Driver]Associated statement is not prepared (0) (SQLNumResultCols)')
Может я знаю, что не так с моим Python код?
У вас в основном есть две команды, между которыми нет разделителя. Либо отправляйте каждую команду отдельно, либо помещайте разделитель (GO или;) между ними. Также, если pyOdbc имеет метод executeNonQuery, который будет вам нужен, запрос не будет возвращать строки, и ошибка, кажется, предполагает, что он ожидает некоторых. –