Python 如何使用sqlalchemy core从resultset中选择distinct?
我有3个模型:任务、备注、文档。一个任务可以有1个或多个备注和/或文档。型号:Python 如何使用sqlalchemy core从resultset中选择distinct?,python,postgresql,flask,sqlalchemy,Python,Postgresql,Flask,Sqlalchemy,我有3个模型:任务、备注、文档。一个任务可以有1个或多个备注和/或文档。型号: tasks = Table("tasks", metadata, Column("id", Integer, primary_key=True) update_history = Table("update_history", metadata, Column("id", Integer, primary_key=True),
tasks = Table("tasks", metadata,
Column("id", Integer, primary_key=True)
update_history = Table("update_history", metadata,
Column("id", Integer, primary_key=True),
Column("remarks", String),
Column("task_id", Integer,ForeignKey("tasks.id")),
documents = Table("documents", metadata,
Column("id", Integer, primary_key=True),
Column("file_name", String),
Column("task_id", Integer, ForeignKey("tasks.id"))
省略了其他属性。我仅使用sqlalchemy core如何为特定任务生成表备注和文档
我试过:
tasks1 = tasks.alias()
s = select([tasks.c.description.distinct(),
update_history.c.id.label('updates_id'),
update_history.c.remarks,
documents.c.file_name
]).\
where(
and_(
tasks.c.id == task_id,
update_history.c.task_id == task_id,
documents.c.task_id == task_id
)
).\
select_from(update_history.
join(tasks, update_history.c.task_id == tasks.c.id)).\
select_from(documents.
join(tasks1, documents.c.task_id == tasks1.c.id)
)
为此,我得到了多个输出,而不是不同的输出,即对于同一个任务,如果有2个备注,2个文档,我的o/p应该只有1个不同的任务id,带有不同的备注,不同的文档名称。目前我得到:
{
"updates_docs": [
{
"description": "Create journal entries for May 2015",
"file_name": "bower.txt",
"remarks": "remark 1 for task 1",
"updates_id": 1
},
{
"description": "Create journal entries for May 2015",
"file_name": "curl_commands.md",
"remarks": "remark 2 for task 1",
"updates_id": 2
},
{
"description": "Create journal entries for May 2015",
"file_name": "curl_commands.md",
"remarks": "remark 1 for task 1",
"updates_id": 1
},
{
"description": "Create journal entries for May 2015",
"file_name": "bower.txt",
"remarks": "remark 2 for task 1",
"updates_id": 2
}
]
}
这是不可取的。是否有更好的方法正确使用distinct和sqlalchemy核心表达式语言?
使用postgresql 9.1为什么要加入两次
任务?@dirn我该怎么做?我还在学习SQLAlchemy你为什么要加入两次任务?@dirn我该怎么做?我还在学炼金术