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

使用Flask-SQLAlchemy连接含斜杠的MSSQL服务器报错求助

解决MSSQL实例名含斜杠导致的SQLAlchemy连接失败问题

问题根源

核心问题是服务器名称中的斜杠(/)属于URI的保留分隔符,手动拼接URI时,程序会把DESKTOP-XXXXX/TEST2里的/当成服务器与数据库的分隔符,导致仅识别DESKTOP-XXXXX作为服务器名,忽略了实例名TEST2。

两种有效解决方法

方法1:手动URL编码斜杠

把服务器名称中的/替换为URL编码值%2F,让URI解析器正确识别完整的服务器+实例名:

server = r'DESKTOP-XXXXX/TEST2'
user = r'DESKTOP-XXXXXYYYYYY'
password = r'something'
db = r'flask_test'
app = Flask(__name__)

# 编码服务器名中的斜杠
encoded_server = server.replace('/', '%2F')
# 用f-string拼接更简洁
app.config['SQLALCHEMY_DATABASE_URI'] = f"mssql+pymssql://{user}:{password}@{encoded_server}/{db}"

方法2:使用SQLAlchemy URL构造器(推荐)

SQLAlchemy的URL.create()方法会自动处理特殊字符编码,彻底避免手动拼接的失误:

from sqlalchemy.engine import URL
from flask import Flask

server = r'DESKTOP-XXXXX/TEST2'
user = r'DESKTOP-XXXXXYYYYYY'
password = r'something'
db = r'flask_test'
app = Flask(__name__)

# 自动处理特殊字符编码
db_url = URL.create(
    drivername='mssql+pymssql',
    username=user,
    password=password,
    host=server,
    database=db
)
app.config['SQLALCHEMY_DATABASE_URI'] = str(db_url)

额外提示

MSSQL实例名通常用反斜杠(\)分隔主机与实例(比如DESKTOP-XXXXX\TEST2),如果改用这种格式,原始字符串(r'')可直接保留反斜杠,但仍建议用URL构造器处理,规避潜在转义问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:15:31