首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不解析日期的情况下运行pd.read_sql?

如何在不解析日期的情况下运行pd.read_sql?
EN

Stack Overflow用户
提问于 2019-06-05 11:55:08
回答 1查看 674关注 0票数 0

我需要在不解析日期的情况下运行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

需要关闭日期解析以防止此错误:

代码语言:javascript
复制
  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
EN

回答 1

Stack Overflow用户

发布于 2019-06-05 12:48:10

您的问题是,当您指定块大小时,请看这个示例:

代码语言:javascript
复制
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时,它会导致

代码语言:javascript
复制
AttributeError: 'generator' object has no attribute 'empty' 

可以先尝试运行较小查询,例如,限制为1,然后成功运行具有chunksize的查询

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56454047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档