【问题标题】:Query SQLAlchemy Time to Pandas Time (Python)查询 SQLAlchemy 时间到 Pandas 时间(Python)
【发布时间】:2020-06-19 08:18:46
【问题描述】:

我正在尝试将 SQLalchemy 表查询到 Pandas 数据框并匹配时间。没有日期,只有时间。基本上我只需要在数据库中找到与我的 Pandas 数据帧中的时间匹配的记录。

Release Table 基本上就是这样的:

class Release_Table(Base):
    __tablename__ = 'Release_Table'

    id = Column('Id', Integer, primary_key=True)
    release_time = Column('release_time', Time)

而df['release']的数据类型是dtype('O')

所以我这样做:

for i in df.index:
     release = session.query(Release_Table).filter(Release_Table.release_time == df.loc[i,'release']).first()
     df.loc[i, 'release'] = release.id

当我这样做时,我得到这个错误:

ProgrammingError: ('42000', '[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]等号运算符中时间和日期时间2的数据类型不兼容。(402) (SQLExecDirectW); [ 42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]无法准备语句。(8180)')

如果我尝试将 df.loc[i, 'release'] 转换为日期时间,它会显示:

TypeError: 不能转换为日期时间

所以我不知道如何比较这两次。据我所知,这两种数据类型都是 datetime.time ,除非我遗漏了什么。

【问题讨论】:

  • 您需要提供更多信息。 Release_Table 是什么?另外,请显示df的dtypes:df.dtypes
  • 更新了更多信息。
  • df.loc[i,'release'].time() ?

标签: python pandas datetime sqlalchemy


【解决方案1】:

好的,我想通了。我只需要这样做:

for i in df.index:
     release = session.query(Release_Table).filter(Release_Table.release_time == str(df.loc[i,'release'])).first()
     df.loc[i, 'release'] = release.id

把它变成一个字符串为我解决了这个问题。我会把这个留在这里,以防其他人偶然发现这个问题。

【讨论】:

    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 2016-11-01
    • 2021-10-04
    • 2014-08-05
    • 2012-03-15
    • 2019-03-14
    • 2013-05-05
    • 2014-10-25
    相关资源
    最近更新 更多