【发布时间】:2019-03-10 07:30:41
【问题描述】:
我被这个数据库搜索问题困住了: 我有一个带有不同复选框的 PyQt5 小部件。它们中的每一个都代表我数据库中的一列。例如,“工人姓名”和“部门”。复选框放置在 lineEdits 附近,因此用户在此 lineEdit 中插入一些文本,而不是单击复选框和“查找”按钮。
假设用户在 lineEdit 中插入“John”,而不是按“worker_name”复选框并通过
session.query(Doc).filter_by('worker_name'=text_from_lineEdit)
如果用户在两个 lineEdits 中插入文本并按下两个复选框('worker_name' 和 'department'),查询将如下所示:
session.query(Doc).filter_by('worker_name'=text_from_lineEdit, 'department'=text_from_lineEdit_2)
但是,如果我有很多复选框(与 DB 表中的列一样多),我不知道哪些会被按下,哪些不会。在这种情况下我应该如何形成查询?我的意思是我将拥有 'wrk_name'、'department' 和 'date' 并且用户只能通过 'worker_name' 或 'worker_name' + 'date' 或所有复选框进行搜索。
有没有办法根据给出的参数动态形成数据库查询,哪些参数不包含在 'filter_by'/'filter 中或忽略。
请分享您对可能实现此类功能的想法。谢谢你的时间。
【问题讨论】:
标签: python sqlalchemy pyqt5