Запрос SQLAlchemy Time to Pandas Time (Python) - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь запросить таблицу SQLalchemy для Pandas кадра данных и сопоставить время. Там нет даты, просто время. По сути, мне просто нужно найти запись в базе данных, которая соответствует времени из моего Pandas dataframe.

Таблица релизов в основном такова:

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 Собственный серверный клиент 11.0] [SQL Сервер] Типы данных time и datetime2 несовместимы в операторе равенства. (402) (SQLExecDirectW); [42000 ] [Microsoft] [SQL Собственный клиент сервера 11.0] [SQL Сервер] Оператор (ы) не может быть подготовлен. (8180) ')

Если я пытаюсь конвертировать df.loc [i, 'release'] для datetime, он говорит:

TypeError: не конвертируется в datetime

Так что я не знаю, как сравнить эти два раза. Оба типа данных являются datetime.time из того, что я могу сказать, если я что-то упускаю.

1 Ответ

0 голосов
/ 06 марта 2020

Хорошо, я понял это. Мне просто нужно было сделать это:

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

Превращение в строку решило это для меня. Я оставлю это здесь на случай, если кто-нибудь еще наткнется на эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...