我仍在学习Python,我需要处理一个sql查询不提供任何行的情况,并使用带有chunksize参数的pandas read_sql函数。
这是当前行:
df = pd.concat([x for x in pd.read_sql(SQL_request,self.connection, chunksize=50000)], ignore_index=True)
查询返回零行时,出现此错误:
File "[....]\lib\site-packages\pandas\core\reshape\concat.py", line 239, in __init__
raise ValueError('No objects to concatenate')
ValueError: No objects to concatenate
处理此问题的最佳方法是什么?即使没有行(列必须在那里),我也需要返回一个空的数据框。我需要保持分块,这确实有助于不占用太多内存。
我考虑过运行不带分块的第一个查询,并检查是否有任何行,然后运行第二个分块的查询。但是我觉得这是一个非常糟糕且效率低下的想法。
答案 0 :(得分:0)
尝试一下:
df = pd.concat([x for x in pd.read_sql(SQL_request,self.connection, chunksize=50000) if not x.empty] , ignore_index=True)
啊明白了。您可以尝试以下代码吗?如果可以,我会更新答案。
try:
df = pd.concat([x for x in pd.read_sql(SQL_request,self.connection, chunksize=50000)] , ignore_index=True)
except:
df = pd.read_sql(SQL_request,self.connection)