首页 > 解决方案 > Pandas sqlalchemy create_engine 与 SQL Server Windows 身份验证的连接

问题描述

我正在尝试将 Pandas DataFrame 上传到 SQL 服务器表。从阅读来看,sqlalchemy to_sql 方法似乎是一个不错的选择。但是,我无法让 create_engine 建立连接。

我能够连接到数据库以使用 Windows 身份验证检索数据。这是我正在使用的连接字符串:

cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                      "Server={server_name};"
                      "Database={database_name};"
                      "Trusted_Connection=yes;")

我尝试了几种不同的方法来使用我的登录信息进行连接,这是最新版本:

engine = create_engine(
        "mssql+pyodbc://{network_user_name}:{network_pw}@{server_name}//{database_name}"
    )

engine.connect()

这是我得到的错误:

InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
(Background on this error at: http://sqlalche.me/e/rvf5)

标签: pythonsql-serverpandassqlalchemy

解决方案


如果要使用 Windows 身份验证,则只需省略连接 URI 的用户名/密码部分。这对我来说很好:

connection_uri = (
    "mssql+pyodbc://@192.168.0.179:49242/mydb?driver=ODBC+Driver+17+for+SQL+Server"
)
engine = sa.create_engine(connection_uri)

推荐阅读