首页 > 解决方案 > 无法连接到数据库。(pyodbc.Error) [Microsoft][ODBC Driver 17 for SQL Server]用户 '%user%' 登录失败。(18456) (SQLDriverConnect)

问题描述

我们已将 SQL Server 从版本 2012 迁移到 2017,现在我们无法连接到数据库。

(pyodbc.Error) ('28000', "[28000]
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user
'usintranet'. (18456) (SQLDriverConnect)")

有没有人有同样的问题?

我们使用python36和python3。

以下代码的参数是:

name: 'producao:integracao18'
type: 'mssql'
conf:
  user: 'userlist'
  password: 'password2019'
  host: '176.1.1.1'
  port: 134
  database: 'CRM'

连接数据库的方法是:

def connect(self, driver, conf):
    """Connects to a database and returns the connection instance"""
    conn = None

    # see http://docs.sqlalchemy.org/en/latest/core/engines.html
    if driver == 'sqlite':
        conn = f"sqlite:///{conf['local']}"
    elif driver == 'mysql':
        conn = f"mysql://{conf['usuario']}:{conf['senha']}@{conf['host']}:{conf['porta']}/{conf['database']}"
    elif driver == 'mssql':
        conn = f"mssql+pyodbc://{conf['usuario']}:{conf['senha']}@{conf['host']}:{conf['porta']}/{conf['database']}"
        # MSSQL needs pyodbc and a specific driver, you can check the available ones with pyodbc.drivers()
        conn += '?driver=ODBC+Driver+17+for+SQL+Server'

标签: pythonsql-serverpyodbc

解决方案


我没有遇到此错误,但我要验证的第一件事是您的 ODBC 设置仍然在您的主机上正确配置。

我不熟悉 pyodbc,但如果上面的提示没有帮助,您应该验证您的 pyodbc 版本是否与您正在使用的 ODBC 驱动程序兼容。


推荐阅读