【问题标题】:Which exact driver is sqlalchemy using?sqlalchemy 使用哪个确切的驱动程序?
【发布时间】:2021-11-11 20:04:16
【问题描述】:

我在使用 pyinstaller 时遇到了 MS SQL 连接问题。在交互模式下运行时,一切都按预期工作。编译成exe后,第一次查询MS SQL数据库连接超时,报如下错误:

(pyodbc.OperationalError) ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]Named Pipes Provider: 无法打开与 SQL Server [53] 的连接。(53) (SQLDriverConnect) ; [08001] [Microsoft][ODBC Driver 17 for SQL Server]登录超时过期 (0); ...

我的连接字符串类似如下:

create_engine(
"mssql+pyodbc://USER:PASSWORD@SERVERIP/DB_NAME?driver=ODBC+Driver+17+for+SQL+Server"
)

在尝试诊断问题时,我正在使用 pyodbc.drivers() 打印出可供 pyodbc 使用的驱动程序(这表明编译和交互中可用的驱动程序之间存在很大差异)以及正在使用的驱动程序

print(session.bind.dialect.name)
> pyodbc
print(session.bind.dialect.driver)
> mssql

它返回正在使用的上层 Python 模块,但不返回在较低层处理它的 .dll。有没有办法找到正在使用的确切驱动程序?任何可能导致编译版本错误的提示也将不胜感激。

【问题讨论】:

    标签: sql-server python-3.x sqlalchemy pyinstaller


    【解决方案1】:

    问题可能出在您的连接字符串中。

    要使用 sqlAlchemy 创建正确的连接字符串以连接到 MSSQL Server ODBC 驱动程序,请使用以下命令:

    import urllib
    from sqlalchemy import create_engine
    
    server = 'serverName\instanceName,port' # to specify an alternate port
    database = 'mydb' 
    username = 'myusername' 
    password = 'mypassword'
    
    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)
    

    另外,您可以查看以下文章Connecting to Microsoft SQL Server using SQLAlchemy and PyODBC

    【讨论】:

      【解决方案2】:

      有什么方法可以找到正在使用的确切驱动程序 [.dll]?

      import pyodbc
      
      cnxn = engine.raw_connection()
      print(cnxn.getinfo(pyodbc.SQL_DRIVER_NAME))  # msodbcsql17.dll
      print(cnxn.getinfo(pyodbc.SQL_DRIVER_VER))  # 17.08.0001
      

      【讨论】:

      • 我接受了另一个答案,因为编辑我制作连接字符串的方式解决了我遇到的原始问题,但我想指出@gord-thompson 提供了如何获取驱动程序名称和版本.谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 2016-04-17
      • 1970-01-01
      相关资源
      最近更新 更多