用python过滤数据库中的搜索



我是python新手,我正在编写一个小的web应用程序来在数据库中搜索。

我试过这个代码,但它不工作。它只在放置最多3列搜索时工作,如lieu, cote, category等。

我尝试使用elif分隔它们,但它没有给我精确的匹配。

是否有一种方法来纠正这一点,这样我就可以找到准确的匹配,当我填写所有的输入?

例如,当我搜索lieu: sion和annee: 1799时,它可以工作,但当我添加signataire:派生时,它没有找到任何内容。

数据库更新:当我有分类时,它也可以工作,似乎当它必须搜索签名或有多个列的主题时,它会感到困惑。

这是我最后的镜头:

"

def search_results(search):
results = []
lieu = search.data['Lieu']
annee = search.data['Annee']
signataire = search.data['Signataire']
cote = search.data['Cote']
sujet = search.data['Sujet']
categorie = search.data['Categorie']
if search.data['Lieu'] or search.data['Annee'] or search.data['Cote'] or 
search.data['Categorie'] or search.data['Signataire'] or search.data['Sujet']:
qry = db_session.query(Cote).filter(or_(
Cote.lieu.contains(lieu), Cote.annee.contains(annee), 
Cote.cote.contains(cote),
Cote.categorie.contains(categorie), 
Cote.signataire_nom.contains(signataire),
Cote.signataire_titre.contains(signataire),Cote.sujet_1.contains(sujet), 
Cote.sujet_2.contains(sujet), Cote.sujet_3.contains(sujet)))
results = qry.all()

"

从你的代码,我知道你正在使用flask-sqlalchemy。试试下面的代码。它可能对你有帮助。

from sqlalchemy import or_
conditions = [
Cote.lieu.contains(lieu),
Cote.annee.contains(annee), 
Cote.cote.contains(cote),
Cote.categorie.contains(categorie), 
Cote.signataire_nom.contains(signataire),     
Cote.signataire_titre.contains(signataire),
Cote.sujet_1.contains(sujet), 
Cote.sujet_2.contains(sujet), Cote.sujet_3.contains(sujet)
]
qry = Cote.query.filter(or_(*conditions))

相关内容

  • 没有找到相关文章

最新更新