首页 > 解决方案 > 连接到 SQL 数据库时出现 pyodbc 错误“无法打开登录请求的数据库“database3”。”

问题描述

我有一个我连接到的数据库,它以前可以工作,几个月后又回到脚本,现在它停止工作,我收到以下错误:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + DB['servername'] + ';DATABASE=' + DB['database'] + ';Trusted_Connection=yes' + ';UID=' + DB['user'] + ';PWD=' + DB['password'])

ProgrammingError: ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]无法打开登录请求的数据库“database3”。登录失败。(4060) (SQLDriverConnect); [42000] [ Microsoft][ODBC SQL Server Driver][SQL Server]无法打开登录请求的数据库“database3”。登录失败。(4060)')

我可以使用 SQL Server Server Management Studio 版本 18 使用相同的凭据进行连接并查询相关数据库。我正在使用以下版本号:

Python: 3.6.7 
Pandas: 1.0.3
pyODBC: 4.0.27 also tried upgrading this to 4.0.30.

我用来连接的代码是:

# parameters for connecting to SQL databse 
DB = {'servername': 'server\sqlexpress',
      'database': 'database3',
     'user':'sa',
     'password' : 'Password'}

# create the connection
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + DB['servername'] + ';DATABASE=' + DB['database'] + ';Trusted_Connection=yes' + ';UID=' + DB['user'] + ';PWD=' + DB['password'])

有人可以帮我解决这个问题吗?

标签: sql-serverpython-3.xpyodbc

解决方案


您应该提供UID=...;PWD=... OR Trusted_Connection=yes,而不是两者。如果您想使用 SQL 身份验证(而不是 Windows 身份验证),请使用Trusted_Connection=no(或完全省略它)。


推荐阅读