使用 Python 的自定义数据库查询

custom database query with Python

我有一个大型数据库(超过 500 万行),可以通过 Microsoft Access 访问。 到目前为止,我能够使用 python 将整个 table 拉到数据框中,但这需要很长时间才能处理(超过 15 分钟),这太疯狂了,因为我只需要做很多工作整个 table 的较小部分 ...

import pyodbc
import pandas as pd


conn_str(
r'DRIVER = {Adaptive Server Enterprise};'
r'DBQ = \path_where_the_table_is_located.mdb;'
r'SERVER = server_name;'
r'Databse = ...;'
r'UID = xxx;'
r'PWD = xxx;'
r'port = xxx')


con = pyodbc.connect(conn_str)
cursor = conn.cursor()

df  = pd.read_sql('select * table_to_be_converted_into_a_df, conn)

我如何增强上面的查询以仅请求整个 table 的一小部分并且 运行 更快?

df1 = df.loc[df['date'] == '2021-07-07']

这是我 运行 完成后缩小 df 的代码,我想以某种方式添加到初始查询中以仅查询我需要的数据并且 运行 它更快

改变 SQL 查询本身,使该日期只有 returns 行看起来像...

select * from table_to_be_converted_into_a_df where date = '2021-07-07';

这将减少从数据库返回到您的 python 脚本的数据总量——这会显着加快您的脚本速度。但是,如果您的 table table_to_be_converted_into_a_dfdate 列上没有索引,那么您的查询仍将扫描 整个 table,这可能需要一段时间。

如果是这种情况,请考虑向 date 列添加索引。