我需要在不解析日期的情况下运行pd.read_sql。
在pd.read_sql文档中的parse_dates参数下,它声明它可以是Dict of {column_name: arg dict}, where the arg dict corresponds to the keyword arguments of pandas.to_datetime() Especially useful with databases without native Datetime support, such as SQLite.
在to_datetime文档中,默认情况下为errors='raise'。如果我可以将它更改为errors='ignore'或errors='coerce',这个问题应该会得到解决。
我试着这样实现它,如下所示:
pd.read_sql(query, con, parse_dates={'col_name': {'errors': 'ignore'}}, chunksize=10**5)
它运行时没有错误,但仍然可以解析日期。
代码与此问题不是很相关。它基本上就是:
df = pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=10**5)
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sql.html
需要关闭日期解析以防止此错误:
File "expense.py", line 20, in <module>
for df in gen:
File "C:\Users\rfrigo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 1453, in _query_iterator
data = cursor.fetchmany(chunksize)
ValueError: year -6371 is out of range发布于 2019-06-05 12:48:10
您的问题是,当您指定块大小时,请看这个示例:
if __name__ == '__main__':
empty_query = 'select * from some_table where id = 8456314523;'
df =pd.DataFrame()
df = pd.read_sql(empty_query,connection,chunksize=10**5)
print "df : {}".format(df if not df.empty else "df is empty")
print 'END'当我没有指定chunksize=10**5时,df就是空的,但是当我指定chunksize时,它会导致
AttributeError: 'generator' object has no attribute 'empty' 可以先尝试运行较小查询,例如,限制为1,然后成功运行具有chunksize的查询
https://stackoverflow.com/questions/56454047
复制相似问题