SQL连接字符串中密码含特殊字符@的正确格式化方法问询
你遇到的报错有两个诱因:
- 连接URL中密码包含的
@属于URL保留字符,会被解析为账号密码段和主机地址段的分隔符,导致实际传入的主机地址、密码内容全部识别错误 - 原连接语句未指定对应的ODBC驱动版本,触发数据源找不到的错误
无需修改原有密码,按照以下两种方法调整连接语句即可解决问题:
方法1:手动转义特殊字符+补全驱动参数
直接将密码中的@转义为URL编码%40,同时追加ODBC驱动参数即可,示例如下:
%sql mssql+pyodbc://dbadmin:myP%40ssword@Foray64?driver=ODBC+Driver+17+for+SQL+Server
注意:如果你的设备上安装的是其他版本的SQL Server ODBC驱动,将参数值替换为对应版本即可(比如ODBC+Driver+13+for+SQL+Server)。
方法2:自动编码特殊字符(推荐,适配包含多类特殊字符的密码)
如果密码还包含其他URL保留字符(比如/、?、&等),可以通过Python内置的编码工具自动处理,避免手动转义遗漏:
import urllib.parse # 直接填入原始密码即可,无需手动修改 raw_pwd = "myP@ssword" encoded_pwd = urllib.parse.quote_plus(raw_pwd) conn_str = f"mssql+pyodbc://dbadmin:{encoded_pwd}@Foray64?driver=ODBC+Driver+17+for+SQL+Server" # 执行连接 %sql $conn_str
内容的提问来源于stack exchange,提问作者James Singleton
相关产品推荐
相关产品推荐

