在Python中运行SQL的最佳方式

问题描述 投票:0回答:1

我正在寻找一种更有效的方法在 Python 中执行 SQL 查询。运行查询时,我当前的流程似乎是最佳的,但是考虑到执行时间,数据帧的转换过程似乎效率低下。

下面是我的代码的粗略框架。我很抱歉没有提供完全可重现的示例,因为需要连接到 Oracle。

import pandas as pd
import pyodbc
import time

login_info = f"""

    Driver={{IBM DB2 ODBC DRIVER - IBMDBCL1}};
    HostName=xxx;
    Port=xxx;
    Security=xxx;
    Database=xxx;
    UID={xxx};
    PWD={xxx};
"""

conn = pyodbc.connect(login_info)
cursor = conn.cursor()

def execute_sql(query):
    query_start_time = time.time()
    cursor.execute(query)

    cols = [c[0] for c in cursor.description]
    cols = list(map(lambda x: x.lower(), cols))

    query_rt = "--- Query Runtime: %s seconds ---" % (time.time() - query_start_time)
    
    df = pd.DataFrame.from_records(cursor.fetchall(), columns=cols)

    total_rt = "--- Total Runtime: %s seconds ---" % (time.time() - query_start_time)
    
    print(query_rt)
    print(total_rt)
    return df

loss_query = '''

select * from xxx limit 1

'''

loss_df = execute_sql(loss_query)

运行未指定的查询时,查询运行时间 = 99 秒,总运行时间 = 359 秒。对我来说,将光标转换为数据帧所需的时间比执行查询所需的时间长 2.6 倍,这似乎很奇怪,但也许这是标准的?

python sql pyodbc
1个回答
0
投票

执行标准查询的方式,运行时间取决于您尝试获取的数据量,此外我们还需要考虑数据库服务器和您的机器的处理能力。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.