首页 > 解决方案 > 查询 SQLAlchemy 时间到 Pandas 时间(Python)

问题描述

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

发布表基本上就是这样的:

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]数据类型 time 和 datetime2 在 equal to 运算符中不兼容。(402) (SQLExecDirectW); [42000] [ Microsoft][SQL Server Native Client 11.0][SQL Server]无法准备语句。(8180)')

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

TypeError:不可转换为日期时间

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

标签: pythonpandasdatetimesqlalchemy

解决方案


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

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

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


推荐阅读