使用 Windows 身份验证在 Python 中使用 SQL Alchemy 连接到网络上的 MS SQL

Jim*_*mmy 0 python sql-server sqlalchemy pyodbc

我正在尝试使用 pandas.read_sql_table 从 MS SQL Server 获取数据(服务器在网络上)。我使用 Windows 身份验证来访问服务器。Pandas read_sql_table 将 SQL Alchemy 连接作为“连接”的参数。我很难找到一个结合了以下内容的示例:

  1. SQL 炼金术
  2. 微软 SQL 服务器
  3. DSN(根据 SQL Alchemy 的“首选”规范)
  4. Windows 身份验证

我咨询了 SQL Alchemy,它显示了一个使用 SQL 身份验证的示例,但没有使用 Windows 身份验证。http://docs.sqlalchemy.org/en/latest/dialects/mssql.html#connecting-to-pyodbc 以下是我尝试过的各种选项。都返回错误。

import pandas as pd
from sqlalchemy import create_engine
import pyodbc
# set some variables
dbname = 'mydbname'
schemaname = 'myschemaname'
servername = 'myservername'
tablename = ‘mytablename’

sqlcon = create_engine('mssql+pyodbc://@' + servername)
#sqlcon = create_engine('mssql+pyodbc://' + servername + '/' + dbname)
#sqlcon = create_engine('mssql+pyodbc://' + servername)
#sqlcon = create_engine('mssql://' + servername + '/' + dbname + '?trusted_connection=yes')
#sqlcon = create_engine('mssql+pyodbc://' + servername + '/' + dbname + '?trusted_connection=yes')
mydataframe = pd.read_sql_table(tablename,con=sqlcon,schema=schemaname)
Run Code Online (Sandbox Code Playgroud)

我得到的错误是这样的:

(pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)')(此错误的背景: http:// /sqlalche.me/e/rvf5 )

特别令人困惑的是关于没有指定默认驱动程序的评论。当我使用此 DSN 格式时,没有一个示例涉及指定默认驱动程序。

我已经咨询了这个例子,这对我来说也失败了:How do I connect to SQL Server via sqlalchemy using Windows Authentication?

我可以与 SSMS 正常连接。我正在使用 python 3.6。

Jim*_*mmy 9

我找到了我的问题的解决方案。贴在这里供其他人参考。

此代码有效。不过,我无法避免明确指定驱动程序。

sqlcon = create_engine('mssql+pyodbc://@' + servername + '/' + dbname + '?driver=ODBC+Driver+13+for+SQL+Server')
Run Code Online (Sandbox Code Playgroud)

  • 你能向我解释一下司机是做什么的吗? (2认同)