0

我正在尝试使用 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。由于一些限制。

谢谢

4

2 回答 2

0

来自CREATE DATABASE文档。

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

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

engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
于 2019-09-24T11:54:33.253 回答
0

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

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")
于 2019-09-24T12:36:07.657 回答