Python 使用Jupyter中的pyodbc连接到SQL Server时,连接字符串中出现双反斜杠

Python 使用Jupyter中的pyodbc连接到SQL Server时,连接字符串中出现双反斜杠,python,sql-server,string,pyodbc,Python,Sql Server,String,Pyodbc,背景: 我正在运行Windows 10 Enterprise,使用Jupyter Notebook使用Pyodbc连接到SQL Server实例 我能够使用trusted_connection成功连接=是 其中server='.\SQLEXPRESS'我的本地实例 con_string = f'DRIVER={driver};SERVER={server};DATABASE={db};trusted_connection=yes;' 但是,当我尝试传入连接到Prod/Test服务器时需要的凭据

背景:

我正在运行Windows 10 Enterprise,使用Jupyter Notebook使用Pyodbc连接到SQL Server实例

我能够使用trusted_connection成功连接=是

其中server='.\SQLEXPRESS'我的本地实例

con_string = f'DRIVER={driver};SERVER={server};DATABASE={db};trusted_connection=yes;'
但是,当我尝试传入连接到Prod/Test服务器时需要的凭据时,我会收到一个错误,即我的用户名无效

其中server='.\SQLEXPRESS'我的本地实例,该实例仍应使用creds

`username = '<domain>\<user>'`

con_string = `f'DRIVER={driver};SERVER={server};DATABASE{db};UID={username};PWD={password}'
如果我运行printusername,我会得到预期的“域\用户”

但是,当我运行与以前相同的连接字符串时,这一次使用用户名和密码,我从pyodbc收到一条错误消息,上面说:

“域\用户”不存在

为什么SQL Server将变量username视为包含“domain\\user”,而不是我期望的“domain\user”

我已经尝试了所有我能想到的方法来得到一个反斜杠,但似乎没有任何效果。从将中的值作为环境变量加载到原始字符串、替换等

有趣的是,每当我在没有打印的情况下获得用户名aka的输出时,我会得到“domain\\user”

更令人困惑的是,为什么SQL Server没有为服务器回退一个错误,我甚至没有在那里避开反斜杠,我只是在传递“.\SQLEXPRESS”


非常感谢您能深入了解这个问题。

在此连接字符串中:

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运行程序。

不使用F字符串变量,如果用户名是硬编码的,该连接字符串有效吗?
con_string = f'DRIVER={driver};SERVER={server};DATABASE{db};UID={username};PWD={password}'