【问题标题】:DateTime import using Pandas/SQLAlchemy使用 Pandas/SQLAlchemy 导入日期时间
【发布时间】: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]?

【问题讨论】:

标签: python sql-server pandas sqlalchemy


【解决方案1】:

原来问题出在 SQL Alchemy 如何调用 PyODBC。默认情况下,它将使用不支持 DateTime2 的“SQL Server”驱动程序。当我直接使用 PyODBC 时,我使用的是“SQL Server Native Client 10.0”驱动程序。

为了获得正确的行为,即返回 python 日期时间对象,我需要创建 SQL Alchemy 引擎,如下所示:

import sqlalchemy as sql
connectionString = 'mssql+pyodbc://username:password@my_server/my_database_name?driver=SQL Server Native Client 10.0'
engine = sql.create_engine(connectionString)

?driver=... 部分强制 SQL Alchemy 使用正确的驱动程序。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 2018-07-22
  • 2020-07-24
  • 2012-11-02
  • 2019-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多