You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

指定数据库时Flask-SQLAlchemy连接URI无法正常工作

Flask-SQLAlchemy连接MS SQL Server 2017指定数据库报错问题

正常工作场景(未指定数据库)

未指定数据库时,连接字符串可正常连接默认的master数据库,并成功创建表,代码示例:

# 此代码可正常运行
app.config["SQLALCHEMY_DATABASE_URI"]= "mssql+pyodbc://<myuser>:<mypw>@SQL2017"
db = SQLAlchemy(app)

class VideoModel(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(100), nullable = False)
    views = db.Column(db.Integer, nullable = False)
    likes = db.Column(db.Integer, nullable = False)

    def __repr__(self) -> str:
        return f"Video(name = {name}, views = {views}, likes = {likes})"

db.create_all()

指定数据库后报错

在连接字符串中添加数据库名后,会抛出接口错误,即使已在DBMS中手动创建该数据库,问题依然存在,代码示例:

# 此代码无法运行
app.config["SQLALCHEMY_DATABASE_URI"]= "mssql+pyodbc://<myuser>:<mypw>@SQL2017/videosDB"
db = SQLAlchemy(app)

class VideoModel(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(100), nullable = False)
    views = db.Column(db.Integer, nullable = False)
    likes = db.Column(db.Integer, nullable = False)

    def __repr__(self) -> str:
        return f"Video(name = {name}, views = {views}, likes = {likes})"

db.create_all()

错误信息

sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

可行的替代方案

通过创建engine时,使用connect_args参数指定数据库名的方式可正常工作,代码示例:

# 此代码可正常运行
cargs = {'database': "quotesDB"}
self.engine = create_engine("mssql+pyodbc://<myuser>:<mypw>@SQL2017", connect_args=cargs)

内容的提问来源于stack exchange,提问作者ShengXue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:12:42