【发布时间】:2018-02-14 01:06:26
【问题描述】:
我正在向我的应用程序(使用 PyQt5 创建)添加搜索功能,允许用户搜索数据库中的存档表。我提供了适用的字段供用户选择与行匹配。鉴于其他字段将是空字符串,我在查询过滤器仅使用用户提供的内容时遇到了一些问题。
这是我目前所拥有的:
def search_for_order(pierre):
fields = {'archive.pat.firstname': pierre.search_firstname.text(),
'archive.pat.lastname': pierre.search_lastname.text(),
'archive.pat.address': pierre.search_address.text(),
'archive.pat.phone': pierre.search_phone.text(),
'archive.compound.compname': pierre.search_compname.text(),
'archive.compound.compstrength': pierre.search_compstrength.text(),
'archive.compound.compform': pierre.search_compform.currentText(),
'archive.doc.lastname': pierre.search_doctor.text(),
'archive.clinic.clinicname': pierre.search_clinic.text()
}
filters = {}
for field, value in fields.items():
if value is not '':
filters[field] = value
query = session.query(Archive).join(Patient, Prescribers, Clinic, Compound)\
.filter(and_(field == value for field, value in filters.items())).all()
fields 字典收集搜索表单中所有字段的值。其中一些将是空白的,从而导致空字符串。 filters 旨在成为对象名称和与之匹配的值的字典。
【问题讨论】:
标签: python sqlalchemy