Создайте базу данных с помощью sqlalchemy-turbodbc на MSSQL Server. - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь создать базу данных на сервере MSSQL с sqlalchemy и turbodbc.

Ниже приведен мой код

from sqlalchemy import create_engine
import turbodbc

username = ''
password = ''
server = ''
database = ''
driver= 'ODBC+Driver+17+for+SQL+Server'

con = create_engine(f"mssql+turbodbc://{username}:{password}@{server}:1433/{database}?driver={driver}")

con.execute(f"create database newdb")

Ошибка

DatabaseError: (turbodbc.exceptions.DatabaseError) ODBC error
state: 42000
native error code: 226
message: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]CREATE DATABASE statement not allowed within multi-statement transaction.
[SQL: create database sai]
(Background on this error at: http://sqlalche.me/e/4xp6)

Может кто-нибудь помочь?.Я хочу создать базу данных только с помощью модулей: SQLALCHEMY, Turbodbc или psycopg2.Из-за некоторых ограничений.

Спасибо

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Получил решение.Это сработало для меня

import turbodbc


connection = turbodbc.connect(
                                driver=driver , server=server , database=database,
                                uid=username , pwd=password,
                            )
connection.autocommit =True
cur = connection.cursor()
cur.execute("create database newdb")
0 голосов
/ 24 сентября 2019

Из документов CREATE DATABASE .

Оператор CREATE DATABASE должен выполняться в режиме автоматической фиксации (режим управления транзакциями по умолчанию) и не допускается в явной или неявной транзакции.

В SqlAlchemy вы можете установить автокоммит , передав его в качестве параметра следующим образом:

engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
...