Esc*_*alo 5 python database datetime sqlalchemy
我有两个表'date'列.一个持有(名称,日期),另一个持有(日期,p1,p2).给定一个名称,我想使用表1中的日期来查询表2中的p1和p2; 如果表1中的日期在表2中的日期的两秒内,则匹配应该发生.
你如何使用SQLAlchemy实现这一目标?
我试过(不成功)使用between
运算符并使用如下子句:
td = datetime.timedelta(seconds=2)
q = session.query(table1, table2).filter(table1.name=='my_name').\
filter(between(table1.date, table2.date - td, table2.date + td))
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
编辑: 我已设法使用以下方法解决问题:
from sqlalchemy.sql import between
import datetime
# [all other relevant imports]
td = datetime.timedelta(seconds=2)
t1_entry = session.query(table_1).filter(table_1.name == 'the_name').first()
if t1_entry is not None:
tmin = t1_entry.date - td
tmax = t1_entry.date + td
t2_entry = session.query(table_2).filter(between(table_2.date, tmin, tmax)).first()
return (t1_entry, t2_entry)
return None
Run Code Online (Sandbox Code Playgroud)
所以可以进行比较,但我不确定这种方法是否有效.
提出这个问题一段时间后,到目前为止我想出的方法是:
from sqlalchemy.sql import between
import datetime
# [all other relevant imports]
td = datetime.timedelta(seconds=2)
t1_entry = session.query(table_1).filter(table_1.name == 'the_name').first()
if t1_entry is not None:
tmin = t1_entry.date - td
tmax = t1_entry.date + td
t2_entry = session.query(table_2).filter(between(table_2.date, tmin, tmax)).first()
return (t1_entry, t2_entry)
return None
Run Code Online (Sandbox Code Playgroud)
如果您有更好的想法,我会接受您的答案。
归档时间: |
|
查看次数: |
2931 次 |
最近记录: |