我正在尝试使用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)
我得到的错误是:
(pyodbc.InterfaceError)('IM002','[IM002] [Microsoft] [ODBC驱动程序 管理器]未找到数据源名称且未指定默认驱动程序 (0)(SQLDriverConnect)')(关于此错误的背景: http://sqlalche.me/e/rvf5)
特别令人困惑的是没有指定默认驱动程序的注释。当我使用此DSN格式时,这些示例均未指定默认驱动程序。
我已经咨询了这个例子,但对我来说也失败了:How do I connect to SQL Server via sqlalchemy using Windows Authentication?
我可以很好地与SSMS联系。我正在使用python 3.6。
答案 0 :(得分:4)
我找到了解决问题的方法。在这里发布给其他人'参考
此代码有效。但是,我无法明确地避免明确指定驱动程序。
sqlcon = create_engine('mssql+pyodbc://@' + servername + '/' + dbname + '?driver=ODBC+Driver+13+for+SQL+Server')
答案 1 :(得分:0)
如果您对驱动程序版本感到困惑,可以使用以下代码
username=<username>
password=<password>
server=<servername> | <host:port>
database=<database>
#below code is with authentication
engine = create_engine('mssql+pyodbc://'+username+':'+password+'@' + server + '/' + database + '?driver=SQL+Server')
query = '''select * from <table>'''
result = engine.execute(query)
#below code is without authentication
engine = create_engine('mssql+pyodbc://@' + server + '/' + database + '?driver=SQL+Server')
query = '''select * from <table>'''
result = engine.execute(query)