我正在基于用户输入查询一个遗留的Postgres数据库,并通过django views.py文件输出它。我想通过Django ORM函数生成并执行查询
数据库的设置使每个记录都使用一个唯一的外键字段nct_id
,该字段在所有表中都被引用。使用nct_id
我想从我选择的各种表中提取需要的信息。目前,我可以使用原始SQL生成和执行查询
我试图通过Django ORM执行的原始SQL如下:
Master_Query = Studies.objects.raw('''
SELECT DISTINCT ON (Studies.nct_id)
Studies.nct_id,
Studies.overall_status,
Eligibilities.gender,
Eligibilities.criteria,
Conditions.conditions_name,
Facilities.city,
Facilities.country,
Facility_Contacts.fc_name,
Facility_Contacts.email
FROM Studies
INNER JOIN Eligibilities on Eligibilities.nct_id = Studies.nct_id
INNER JOIN Conditions on Conditions.nct_id = Studies.nct_id
INNER JOIN Facilities on Facilities.nct_id = Studies.nct_id
INNER JOIN Facility_Contacts on Facility_Contacts.nct_id = Studies.nct_id
WHERE
((Studies.overall_status LIKE 'Recruiting' OR Studies.overall_status LIKE 'Unknown status'))
AND ((Conditions.conditions_name LIKE %s OR Conditions.conditions_name LIKE %s))
AND (gender LIKE %s OR gender LIKE %s)
ORDER BY nct_id LIMIT %s''',
[CondTypeU, CondTypeL, GenderQuery, GenderAll, LimitQuery])
我希望看到与原始sql查询相同的输出。从上面的代码中,我应该可以看到基于where子句中的条件的所有联接表中所有选定列的记录。请注意,额外的间距是为了可读性而添加的,并不反映确切的SQL,如果需要,我可以提供
目前没有回答
相关问题 更多 >
编程相关推荐