0

I have a query that looks at a table in my MySQL database and I'm looking to retrieve the data between two datetimes.
At the moment, I get the session and the Table properties assigned just fine:

>>> session
<sqlalchemy.orm.session.Session object at 0x000001EC64FF6EF0>
>>> table
Table('txt_raw1', MetaData(bind=None), Column('datetime', DATETIME(fsp=6), table=<txt_raw1>, nullable=False), and some extra stuff...

I then begin to form the query and so far, so good:

>>> query = session.query(table)
>>> query.filter_by(Name='Jose')
>>> query
<sqlalchemy.orm.query.Query object at 0x000001EC50281A90>

However, when I try to filter by the datetime column, I get an error:

>>> start_date = datetime.strptime('2020-11-10','%Y-%m-%d')
>>> start_date
datetime.datetime(2020, 11, 10, 0, 0)
query.filter_by(datetime > start_date)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'type' and 'datetime.datetime'

Odd thing to me, though, when I checked the first set of data in the query instance, it is of the datetime.datetime format

>>> query[0][0]
datetime.datetime(2019, 11, 16, 1, 43, 54, 192000)

Does anyone have any suggestions to how I can filter by datetime using the type datetime.datetime?

2 Answers 2

1

I think datetime is recognize as type not table column name in query.filter_by(datetime > start_date) code.
Use filter instead of filter_by

query.filter(Table.datetime > start_date)
Sign up to request clarification or add additional context in comments.

Comments

0

face palm
Wasn't too smart using datetime as the column header in the MySQL database
I was able to get the filter by using the table.c operator:

>>> query.filter(table.c.datetime > start_date)
<sqlalchemy.orm.query.Query object at 0x000001EC6502C940>

Note, I used query.filter instead of query.filter_by

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.