第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

有條件地向 SQLAlchemy 查詢添加多個(gè)過濾器,而無需重復(fù)代碼

有條件地向 SQLAlchemy 查詢添加多個(gè)過濾器,而無需重復(fù)代碼

我有一個(gè) SQLAlchemy 模型:class Ticket(db.Model): __tablename__ = 'ticket' id = db.Column(INTEGER(unsigned=True), primary_key=True, nullable=False, autoincrement=True) cluster = db.Column(db.VARCHAR(128)) @classmethod def get(cls, cluster=None):     query = db.session.query(Ticket)     if cluster is not None:         query = query.filter(Ticket.cluster==cluster)     return query.one()如果我添加一個(gè)新列并想擴(kuò)展該get方法,我必須添加if xxx is not None如下所示的列: @classmethod def get(cls, cluster=None, user=None):     query = db.session.query(Ticket)     if cluster is not None:         query = query.filter(Ticket.cluster==cluster)     if user is not None:         query = query.filter(Ticket.user==user)     return query.one()有什么辦法可以提高效率嗎?如果我有太多列,該get方法就會(huì)變得很丑陋。
查看完整描述

1 回答

?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

與往常一樣,如果您不想編寫重復(fù)的內(nèi)容,請(qǐng)使用循環(huán):


@classmethod

def get(cls, **kwargs):

? ? query = db.session.query(Ticket)

? ? for k, v in kwargs.items():

? ? ? ? query = query.filter(getattr(table, k) == v)

? ? return query.one()

因?yàn)槲覀儾辉賹luster=None/設(shè)置user=None為默認(rèn)值(而是取決于調(diào)用者未指定的內(nèi)容永遠(yuǎn)不會(huì)添加到kwargs),所以我們不再需要阻止添加空值過濾器:唯一的方法是如果用戶實(shí)際要求搜索None;的值,則 null 值將最終出現(xiàn)在參數(shù)列表中。因此,如果該請(qǐng)求發(fā)生,這個(gè)新代碼能夠滿足該請(qǐng)求。


查看完整回答
反對(duì) 回復(fù) 2023-08-22
  • 1 回答
  • 0 關(guān)注
  • 1643 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)