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

如何使用pyodbc连接含转义字符密码的MS SQL Server

解决pyodbc连接SQL Server时含反斜杠密码的登录问题

以下几种方案可以解决密码中包含反斜杠导致的登录失败问题:

1. 使用Python原始字符串定义密码

Python的原始字符串(前缀r)会忽略转义逻辑,直接保留字符串中的所有字符,包括反斜杠。如果你的密码包含两个反斜杠,直接用原始字符串声明即可:

import pyodbc

server = "你的服务器地址"
database = "目标数据库名"
username = "用户名"
password = r"包含\\的密码"  # 这里的两个反斜杠会被直接传递给ODBC驱动

# 拼接连接字符串
conn_str = (
    f"DRIVER={{ODBC Driver 17 for SQL Server}};"
    f"SERVER={server};"
    f"DATABASE={database};"
    f"UID={username};"
    f"PWD={password}"
)

conn = pyodbc.connect(conn_str)

2. 手动双重转义反斜杠

如果不想用原始字符串,需要将密码中的每个反斜杠写成两个反斜杠(因为Python字符串中两个反斜杠会被解析为一个实际的反斜杠)。如果密码本身有两个反斜杠,就需要写成四个:

password = "包含\\\\的密码"  # 四个反斜杠最终会被解析为两个实际的反斜杠传递给驱动

3. 使用关键字参数直接连接

pyodbc的connect方法支持直接传入关键字参数,跳过字符串拼接环节,驱动会自动处理特殊字符,这是最稳妥的方式:

import pyodbc

conn = pyodbc.connect(
    driver="{ODBC Driver 17 for SQL Server}",
    server="你的服务器地址",
    database="目标数据库名",
    uid="用户名",
    pwd=r"包含\\的密码"  # 这里也可以用原始字符串或双重转义的普通字符串
)

额外注意事项

  • 确保使用的ODBC驱动是最新版本(推荐ODBC Driver 17或18 for SQL Server),旧版本对特殊字符的处理可能存在兼容问题。
  • 测试时可以临时打印连接字符串(注意不要泄露真实密码),确认反斜杠的数量是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:40:44