【发布时间】:2019-09-18 19:41:49
【问题描述】:
我对 python 和 SQL 很陌生。我在 Excel 中有一个非常大的数据库查询,我正试图直接移至 Python。目前我使用 read_excel() 从 excel 中读取它。
我已经安装了 import pyodbc 并尝试从 excel 中获取连接字符串并将其放入 python。
我写的默认代码是:
import pyodbc
conn_str = 'Provider.....'
conn = pyodbc.connect(conn_str)
SQL_Query = pd.read_sql_query(
'''SELECT *
FROM [MarketData].[Gas].[KplerVesselHistory]''', conn)
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)')
【问题讨论】:
-
我相信你会从包文档中找到所有基本的入门知识 - github.com/mkleehammer/pyodbc/wiki
-
因此,您的 Excel 文档有一个从某处的数据库中检索行的查询,您希望直接从 Python 运行等效查询。那是对的吗?如果是这样,那么几乎可以肯定。问题是 pyodbc 使用 ODBC 连接,而不是 OLEDB 连接。顺便说一句,您正在连接到 Microsoft SQL Server 实例,对吧?
标签: python excel pandas connection pyodbc