我在将SQL日期时间从SQL Server数据库导入Pandas时遇到问题。使用Pandas/SQLAlchemy导入DateTime
我使用以下代码:
data = pd.read_sql('select top 10 timestamp from mytable',db)
'MyTable的' 包含一列 '时间戳',它的类型DATETIME2的。
如果db
是一个pyodbc数据库连接,这工作正常,我的时间戳返回为数据类型'datetime64 [ns]'。但是,如果db
使用create_engine('mssql+pyodbc://...')
创建的SQL Alchemy引擎,则在data
中返回的时间戳类型为'object',并在我的代码中稍后导致问题。
任何想法为什么发生这种情况?我使用熊猫版本0.14.1,pyodbc版本3.0.7和SQL炼金术版本0.9.4。如何将数据强制转换为datetime64 [ns]?
要强制执行此操作,可以使用'read_sql'的parse_dates'关键字(请参阅http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql_query.html)。但是这实际上并不是必须的,并且对我来说似乎是一个bug(在pandas或sqlalchemy中),你可以在https://github.com/pydata/pandas/issues上报告它吗? – joris 2014-09-01 15:08:54
完成:https://github.com/pydata/pandas/issues/8156 – tobycoleman 2014-09-01 15:16:51
你可以接受你自己的答案,就像你自己发现的一样。 – joris 2014-09-03 11:25:41