- 此问题在此处已有答案**:
Writing a connection string when password contains special characters(2个答案)
十小时前关门了。
我正在使用pyodbc来连接python到SQL Server数据库。最近,我把我的密码改为另一个在末尾包含+(加号)的密码,比如****+,但是我无法连接到我的数据库,并显示以下错误:
[Microsoft][用于SQL Server的ODBC驱动程序17][SQL Server]用户"用户名"登录失败。(18456)(SQLDriverConnect); [28000][Microsoft][用于SQL Server的ODBC驱动程序17][SQL Server]用户"用户名"登录失败。(18456)")(此错误的背景信息位于:https://sqlalche.me/e/14/rvf5)
以前的密码没有这个问题,实际上我怀疑是特殊字符和连接字符串的转换是问题的根源,但我不知道如何解决
这是我用来连接
server = '1.1.1.1'
database = 'database'
username = 'username'
password = 'password+'
params = urllib.parse.quote_plus('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password)
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
我非常感谢您对此问题的任何帮助或解释
1条答案
按热度按时间dwthyt8l1#
URL中的特殊字符必须按百分比编码。请参阅https://developers.google.com/maps/url-encoding和https://en.wikipedia.org/wiki/Percent-encoding)
要在Python中实现这一点,可以使用
urllib.parse.quote
:然后在
params
中使用encpassword
而不是password
。For more info, see: https://docs.python.org/3/library/urllib.parse.html#url-quoting