2015-06-12 1 views
3

Использование sqlalchemy 1.0.4, python 3.4.3 и pyodbc 3.0.10.sqlalchemy MSSQL создать инструкцию базы данных, не допускаемую в транзакции с несколькими операциями

Я хочу создать базу данных с сырым sql для сервера MS SQL.

c = "mssql+pyodbc://sa:[email protected]\SQLEXPRESS/master?driver=SQL+Server+Native+Client+11.0" 
e = create_engine(c,echo=True) 
con = e.connect() 

con.execute("CREATE DATABASE xb;") 
con.close() 

Но приведенный выше код возвращает ошибку "create database statement not allowed within multi-statement transaction".

Я пробовал con.execute("commit") перед созданием скрипта, но он ничего не делает.

UPDATE
Если я установить драйвер ?driver=SQL+SERVER это работает !?

ответ

2

Кажется, есть несколько способов сделать это, при этом ключ является автоматическим фиксацией. Я не смог просто переключиться на SQL SERVER, потому что он, похоже, вызывает проблемы с apache. Если вы просто хотите использовать pyodbc вы можете сделать:

import pyodbc 
conn =pyodbc.connect("driver={SQL Server Native Client 11.0};server=databaseBName; database=master; trusted_connection=yes;", autocommit=True) 
curr = conn.execute("CREATE DATABASE databaseName ON (FILENAME='E:\\SQL\\path_to_file.mdf') FOR ATTACH;") 
curr.close() 

Вы также можете использовать SQLAlchemy для создания соединения с:

import sqlalchemy 
engine = sqlalchemy.create_engine("mssql+pyodbc://serverName/master?driver=SQL Server Native Client 11.0;", connect_args = {'autocommit':True}) 
engine.execute("CREATE DATABASE databaseName ON (FILENAME='E:\\SQL\\path_to_file.mdf') FOR ATTACH;") 

Я крепление на файл, но я предполагаю, что он также работает без ,

Смежные вопросы