【发布时间】:2014-10-25 19:07:40
【问题描述】:
我在将日期时间从 SQL Server 数据库导入 Pandas 时遇到问题。
我正在使用以下代码:
data = pd.read_sql('select top 10 timestamp from mytable',db)
“MyTable”包含一个“Timestamp”列,其类型为 DateTime2。
如果db 是一个pyodbc 数据库连接,这可以正常工作,并且我的时间戳作为数据类型“datetime64[ns]”返回。但是,如果 db 是使用 create_engine('mssql+pyodbc://...') 创建的 SQL Alchemy 引擎,则在 data 中返回的时间戳属于“对象”类型,稍后会在我的代码中引起问题。
知道为什么会这样吗?我正在使用 pandas 0.14.1 版、pyodbc 3.0.7 版和 SQL alchemy 0.9.4 版。我怎样才能最好地将数据强制转换为 datetime64[ns]?
【问题讨论】:
-
强制使用,可以使用
read_sql的parse_dates关键字(见pandas.pydata.org/pandas-docs/stable/generated/…)。但这实际上不是必需的,对我来说似乎是一个错误(在 pandas 或 sqlalchemy 中),你能在github.com/pydata/pandas/issues 上报告它吗? -
你可以接受你自己的答案,因为你自己找到了。
标签: python sql-server pandas sqlalchemy