python - 将 OLE DB SQL 连接字符串转换为数据框?
问题描述
我对 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)')
解决方案
像这样的东西可能会起作用:
这使用 SQL Server 的 ODBC 驱动程序进行连接,运行查询并将其返回到 Pandas 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)
推荐阅读
- powershell - 在powershell中将数据导出到csv
- javascript - 我只能从矩形的某个点而不是整个矩形获取数据
- cmake - CMake 错误:catkin_make :::Running command 运行命令:“/ws/build”中的“make -j4 -l4”
- python - TensorFlow 和 Keras 不能与 Anaconda 一起使用或更新
- codeigniter - 有没有办法在 CodeIgnitor 中循环 $this->input->post() 数组?
- apache-flink - Flink Joins on Non-key 属性
- python - 无法遍历 Pandas Dataframe 中的行
- python - 为什么每次都会给我带来磅数的结果?
- c - 依赖于 C/C++ 运算符优先级;运算符 '&&' 和 '==' [MISRA 2012 规则 12.1,建议] | 克林特 9050
- blockchain - 创建用于记录块哈希的底层模块