gpt4 book ai didi

python - SQL Alchemy 和 Pyramid 能否处理日期有效场景

转载 作者:行者123 更新时间:2023-11-30 23:24:41 24 4
gpt4 key购买 nike

我正在寻找一个可以处理以下场景的 Web 框架(希望基于 Python、Postgresql 和 ORM):

您有一个 Person 表(其中有一个人 Avril Lavigne - 有过两次婚姻):

PersonID Start       End         PersonName
-------- ----------- ----------- -------------
1 27-Sep-1984 14-Jul-2006 Avril Lavigne
1 15-Jul-2006 30-Jun-2013 Avril Whibley
1 01-Jul-2013 31-Dec-9999 Avril Kroeger

您有一个分配表(这是一个人所拥有的工作分配等,一个人可以在不同地点拥有多个任务):

AssignID Start       End         PersonID JobID LocID
-------- ----------- ----------- -------- ----- -----
1 27-Sep-1984 26-Sep-1999 1 1 1
1 27-Sep-1999 31-Dec-2002 1 1 2
1 01-Jan-2003 31-Dec-9999 1 1 3
2 01-Jul-2013 31-Dec-9999 1 2 3

有没有一种方法可以让 Pyramid 允许用户选择一个有效日期(比如今天),并且 SQL Alchemy 将能够使用有效日期和 SQL Between 来连接表,以及外键加入PersonID;带回来:

Avril Kroeger 有 2 项作业,JobID 1 和 2 以及 LocID 3。

Oracle 中的 SQL 语句的位置:

select p.PersonName, 
a.JobID,
a.LocID
from Person p,
Assignment a
where a.PersonID = p.PersonID
and trunc(sysdate) between a.Start and a.End
and trunc(sysdate) between p.Start and p.End

我只是担心我要学习另一个无法处理复合主键的 Web 框架以及甚至 SQL 外键也无法处理的上述场景。

那么 ORM 基本上可以处理任意查询吗?如果您采用上述场景,您是否会失去所有 ORM 速记函数?有没有更好的方法来处理上述情况。我应该将生效日期存储为 session 变量吗?

我对该主题的了解不够,无法提供我的解决方案。我更努力避免学习另一个无法解决上述场景的框架。

最佳答案

首先,Pyramid 绝对可以完全处理这种情况,因为 Pyramid 与存储无关,所以它不知道有关数据库、SQL 和其他此类内容的任何信息:) 换句话说,这个问题与 Pyramid 没有任何关系.

其次,SQLAlchemy 确实支持复合主键。从我的想法来看,声明性类看起来像这样:

class Person(sa.Base):
person_id = sa.Column(sa.Integer, primary_key=True)
start = sa.Column(sa.DateTime, primary_key=True)
end = sa.Column(sa.DateTime, primary_key=True)
name = sa.Column(sa.String)

class Assignment(sa.Base):
person_id = sa.Column(sa.Integer, primary_key=True)
start = sa.Column(sa.DateTime, primary_key=True)
end = sa.Column(sa.DateTime, primary_key=True)
...

您的查询将如下所示:

(session.query(Person.name, Assignment.jobId, Assignment.LocID)
.filter(Assignment.person_id==Person.person_id)
.filter(sa.sql.functions.now().between(Person.start, Person.end))
.filter(sa.sql.functions.now().between(Assignment.start, Assignment.end))
)

关于python - SQL Alchemy 和 Pyramid 能否处理日期有效场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com