在 MSSQL Server 上使用 sqlalchemy-turbodbc 创建一个数据库



我正在尝试使用sqlalchemy和turbodbc在MSSQL服务器上创建一个数据库。

下面是我的代码

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。由于一些限制。

谢谢

来自 CREATE DATABASE docs。

CREATE DATABASE 语句必须在自动提交模式下运行(缺省值 事务管理模式(,并且不允许在显式或 隐式事务。

在 SqlAlchemy 中,您可以设置自动提交,将其作为参数传递,如下所示:

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

得到了解决方案。这对我有用

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")

最新更新