Jim*_*mmy 0 python sql-server sqlalchemy pyodbc
我正在尝试使用 pandas.read_sql_table 从 MS SQL Server 获取数据(服务器在网络上)。我使用 Windows 身份验证来访问服务器。Pandas read_sql_table 将 SQL Alchemy 连接作为“连接”的参数。我很难找到一个结合了以下内容的示例:
我咨询了 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。
我找到了我的问题的解决方案。贴在这里供其他人参考。
此代码有效。不过,我无法避免明确指定驱动程序。
sqlcon = create_engine('mssql+pyodbc://@' + servername + '/' + dbname + '?driver=ODBC+Driver+13+for+SQL+Server')
Run Code Online (Sandbox Code Playgroud)