首页 > 解决方案 > 处理 pandas read_sql() 中可选块大小的函数

问题描述

我正在为用户构建一个功能,以轻松输入 SQL 查询/脚本并在 pandas 数据框中获取结果,作为我工作场所最终用户的更广泛的简化工具集的一部分。

我现在遇到的问题是我需要实现pd.read_sql() chunksize参数,它将输出pd.read_sql()从 a更改pd.DataFrame为a iterator object

因此,在实施之前的关键片段chunksize是:

 outputs = {}  # Dict to store the dataframe outputs
 counter = 0

    for command in tqdm(commands):
        try:
            # If SELECT statement, read into dict of dataframes
            if command.upper().strip()[:3] == "SEL":

                outputs[counter] = pd.read_sql(command, con):
                counter += 1

而要处理chunksize可选选择参数的情况,我会处理它:

outputs = {}
counter = 0

    for command in tqdm(commands):
        try:
            if command.upper().strip()[:3] == "SEL":

                for chunk in pd.read_sql(command, con, chunksize=chunksize):
                    outputs[counter] = chunk
                    counter += 1

我正在寻找是否有一种干净的方法来动态处理用户选择或不选择chunksize参数。我当然可以使用一个if/else语句,但我已经非常接近too many branches / nests(又名制作箭头代码)的 pylint 错误,我觉得应该有一种方法来动态处理这个问题。非常感谢有关最干净/最有效方法的建议。

我确实想到的一种解决方案是设置 chunksize = 1 + chunksize_selected_by_user,但我真的不知道总是使用 chunksize 的效率影响是什么,当不是绝对必要的时候。

标签: pythonsqlpandasteradata

解决方案


推荐阅读