在 Jupyter 中使用 pyodbc 连接到 SQL 服务器时连接字符串中的双反斜杠
Double backslash in connection string when connecting to SQL Server with pyodbc in Jupyter
背景:
我是 运行ning Windows 10 Enterprise,使用 Jupyter Notebook 连接到 SQL 使用 Pyodbc 的服务器实例
我能够成功连接 trusted_connection=yes
其中 server = '.\SQLEXPRESS'
(我的本地实例)
con_string = f'DRIVER={driver};SERVER={server};DATABASE={db};trusted_connection=yes;'
但是,当我尝试传递连接到 Prod/Test 服务器时需要的凭据时,我收到一条错误消息,提示我的用户名无效。
where server = '.\SQLEXPRESS'
(我的本地实例)(应该仍然可以使用 creds)
`username = '<domain>\<user>'`
con_string = `f'DRIVER={driver};SERVER={server};DATABASE{db};UID={username};PWD={password}'
这是问题出现的地方:我按如下方式启动用户名,以转义反斜杠:
username='domain\user'
如果我 运行 一个 print(username)
,我会按预期得到 'domain\user'
。
然而,当我 运行 使用与以前相同的连接字符串时,这次使用用户名和密码,我从 pyodbc 收到一条错误消息,内容为:
'domain\user' does not exist.
为什么 SQL 服务器将变量 username
视为包含 'domain\user'
而不是我期望的 'domain\user'
。
我已经尝试了所有我能想到的方法来在其中添加一个反斜杠,但似乎没有任何效果。从将值作为环境变量加载到 "raw" 字符串、替换等
有趣的是,每当我只得到 username
的输出而没有打印时,我得到 'domain\user'
更令人困惑的是,为什么 SQL 服务器没有为 server
返回错误,我什至没有转义那里的反斜杠,我只是传入 '.\SQL快递'
非常感谢对此问题的任何见解。
在此连接字符串中:
con_string = f'DRIVER={driver};SERVER={server};DATABASE{db};UID={username};PWD={password}'
UID 是 SQL 授权登录或数据库用户。不是 Windows 用户。要使用 Windows/AD 身份,您必须使用 trusted_connection=yes
。并且 运行 程序作为目标用户或安装凭据以在 NTLM 身份验证中使用该用户的凭据。或者 运行 您的程序 runas
或 runas /netonly
.
背景:
我是 运行ning Windows 10 Enterprise,使用 Jupyter Notebook 连接到 SQL 使用 Pyodbc 的服务器实例
我能够成功连接 trusted_connection=yes
其中 server = '.\SQLEXPRESS'
(我的本地实例)
con_string = f'DRIVER={driver};SERVER={server};DATABASE={db};trusted_connection=yes;'
但是,当我尝试传递连接到 Prod/Test 服务器时需要的凭据时,我收到一条错误消息,提示我的用户名无效。
where server = '.\SQLEXPRESS'
(我的本地实例)(应该仍然可以使用 creds)
`username = '<domain>\<user>'`
con_string = `f'DRIVER={driver};SERVER={server};DATABASE{db};UID={username};PWD={password}'
这是问题出现的地方:我按如下方式启动用户名,以转义反斜杠:
username='domain\user'
如果我 运行 一个 print(username)
,我会按预期得到 'domain\user'
。
然而,当我 运行 使用与以前相同的连接字符串时,这次使用用户名和密码,我从 pyodbc 收到一条错误消息,内容为:
'domain\user' does not exist.
为什么 SQL 服务器将变量 username
视为包含 'domain\user'
而不是我期望的 'domain\user'
。
我已经尝试了所有我能想到的方法来在其中添加一个反斜杠,但似乎没有任何效果。从将值作为环境变量加载到 "raw" 字符串、替换等
有趣的是,每当我只得到 username
的输出而没有打印时,我得到 'domain\user'
更令人困惑的是,为什么 SQL 服务器没有为 server
返回错误,我什至没有转义那里的反斜杠,我只是传入 '.\SQL快递'
非常感谢对此问题的任何见解。
在此连接字符串中:
con_string = f'DRIVER={driver};SERVER={server};DATABASE{db};UID={username};PWD={password}'
UID 是 SQL 授权登录或数据库用户。不是 Windows 用户。要使用 Windows/AD 身份,您必须使用 trusted_connection=yes
。并且 运行 程序作为目标用户或安装凭据以在 NTLM 身份验证中使用该用户的凭据。或者 运行 您的程序 runas
或 runas /netonly
.