Python 是否将OLE DB SQL连接字符串转换为数据帧?

Python 是否将OLE DB SQL连接字符串转换为数据帧?,python,excel,pandas,connection,pyodbc,Python,Excel,Pandas,Connection,Pyodbc,我对python和SQL非常陌生。我在Excel中有一个DB查询,它非常大,我正试图直接转到Python。目前我使用read_excel()从excel中读取它 我安装了import pyodbc,并试图从excel中获取连接字符串并将其放入python中 我编写的默认代码是: 导入pyodbc conn_str='Provider….' conn=pyodbc.connect(conn_str) SQL\u Query=pd.read\u SQL\u Query( ''选择* 来自[Marke

我对python和SQL非常陌生。我在Excel中有一个DB查询,它非常大,我正试图直接转到Python。目前我使用read_excel()从excel中读取它

我安装了import pyodbc,并试图从excel中获取连接字符串并将其放入python中

我编写的默认代码是:

导入pyodbc
conn_str='Provider….'
conn=pyodbc.connect(conn_str)
SQL\u Query=pd.read\u SQL\u Query(
''选择*
来自[MarketData].[Gas].[KplerVesselHistory]'',康涅狄格州)
excel连接信息如下所示:

Connection type: OLE DB Query

Connection string: Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=MarketData;Data Source=FOTDAL02PR;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=[blank];Use Encryption for Data=False;Tag with column collation when possible=False

Command type: SQL
我得到的错误是:

Traceback (most recent call last):
  File "C:\dev\bin\pycharm\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
    exec(exp, global_vars, local_vars)
  File "<string>", line 3, in <module>
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
回溯(最近一次呼叫最后一次):
文件“C:\dev\bin\pycharm\helpers\pydev\\u pydevd\u bundle\pydevd\u exec2.py”,第3行,在Exec中
执行官(exp、全局变量、本地变量)
文件“”,第3行,在
pyodbc.InterfaceError:('IM002','[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序(0)(SQLDriverConnection)'))

类似的方法可能会奏效:

这将使用SQL Server的ODBC驱动程序进行连接,运行查询并将其返回到DataFrame,然后打印输出

import pyodbc
import pandas


driver = '{ODBC Driver 17 for SQL Server}'
server = 'server_name\instance_name'
database = 'MarketData'
sql = 'SELECT  * FROM [MarketData].[Gas].[KplerVesselHistory]'

conn_str = 'Driver={};Server={};Trusted_Connection=True;Database={}'.format(driver, server, database)
conn = pyodbc.connect(conn_str)
df = pandas.read_sql(sql, conn)
print(df)

我相信您会从软件包文档中找到开始使用的所有基本信息,因此您的Excel文档中有一个查询,可以从某个数据库检索行,您希望直接从Python运行等效的查询。对吗?如果是这样,那么几乎可以肯定这是可能的。问题是pyodbc使用ODBC连接,而不是OLEDB连接。顺便说一句,您正在连接到Microsoft SQL Server实例,对吗?