一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

SQLAlchemy中filter

 花心的程序員 2021-03-20

filter_by() 和 filter() 的最主要的區(qū)別:

模塊語(yǔ)法><(大于和小于)查詢and_和or_查詢
filter_by()直接用屬性名,比較用=不支持不支持
filter()用類名.屬性名,比較用==支持支持

談 filter_by() 的語(yǔ)法之前先看下 filter_by() 的內(nèi)部源碼,去掉注釋之后如下:

    def filter_by(self, **kwargs):
        clauses = [_entity_descriptor(self._joinpoint_zero(), key) == value
                   for key, value in kwargs.items()]
        return self.filter(sql.and_(*clauses))

可以看出,filter_by() 只接受鍵值對(duì)參數(shù),所以 filter_by() 不支持><(大于和小于)和 and_、or_查詢

現(xiàn)在有 mysql 的 user 數(shù)據(jù)庫(kù)表,存儲(chǔ)內(nèi)容如下圖,下面通過(guò)例子來(lái)說(shuō)明兩種查詢方式的用法:


user表

filter_by()
       查詢 user 表里面名字等于 Tom 的:
       db.session.query(User).filter_by(name='Tom').all()
       查詢 user 表里面名字等于 Tom 并且年齡等于 18:
       db.session.query(User).filter_by(name='Tom', age=18).all()
       比如新的需求,查詢 user 表里面名字等于 Tom 或者年齡等于 18 的用戶,那么 filter_by() 就滿足不了要求了

filter()
       查詢 user 表里面名字等于 Tom 的:
       db.session.query(User).filter(User.name == 'Tom').all()
       查詢 user 表里面名字等于 Tom 并且年齡等于 18:
       db.session.query(User).filter(User.name == 'Tom', User.age == 18).all()
       也可以這樣:
       db.session.query(User).filter(User.name == 'Tom').filter(User.age == 18).all()
       如果想使用 and 拼接需要用以下方式:
       db.session.query(User).filter(and_(User.name == 'Tom', User.age == 18)).all()
       以下的方式 and 后面的 User.age == 18 不會(huì)生效:
       db.session.query(User).filter(User.name == 'Tom' and User.age == 18).all()
       查詢 user 表里面名字等于 Tom 的或者年齡等于 18:
       db.session.query(User).filter(or_(User.name == 'Tom', User.age == 18)).all()
       查詢 user 表里面名字等于 Tom 的并且年齡大于 18
       db.session.query(User).filter(User.name == 'Tom', User.age > 18).all()
       查詢 name 中包含字母 a 的所有數(shù)據(jù)(模糊查詢)
       db.session.query(User).filter(User.name.like('%{0}%'.format("a"))).all()

以上的例子都是查詢中使用比較多的,使用方面看大家喜好,filter_by() 對(duì)組合查詢等等支持的不是很好,但是語(yǔ)法相對(duì) filter() 簡(jiǎn)潔一些; 另外 filter() 還有很多其他的查詢,大家可以自己去多多探討。。。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美日韩中国性生活视频| 国产激情一区二区三区不卡| 中文文精品字幕一区二区| 丝袜视频日本成人午夜视频| 欧美做爰猛烈叫床大尺度| 丰满人妻少妇精品一区二区三区| 91人妻丝袜一区二区三区| 亚洲欧美黑人一区二区| 丰满的人妻一区二区三区| 欧美一区二区黑人在线| 深夜少妇一区二区三区| 国产精品一区二区日韩新区| 欧美日韩综合在线精品| 欧洲一级片一区二区三区| 久久精品国产亚洲熟女| 午夜视频成人在线观看| 香港国产三级久久精品三级| 欧美色婷婷综合狠狠爱| 亚洲国产av在线观看一区| 国产av一区二区三区四区五区| 夫妻激情视频一区二区三区| 内用黄老外示儒术出处| 日韩在线视频精品中文字幕| 亚洲欧美天堂精品在线| 色丁香之五月婷婷开心| 国内精品一区二区欧美| 亚洲天堂久久精品成人| 国产高清视频一区不卡| 91久久精品国产一区蜜臀| 亚洲午夜av一区二区| 国产精品超碰在线观看| 日本丁香婷婷欧美激情| 91免费精品国自产拍偷拍| 日韩精品亚洲精品国产精品| 少妇被粗大进猛进出处故事| 精品久久久一区二区三| 亚洲国产精品久久琪琪| 亚洲国产av一二三区| 免费在线播放一区二区| 欧美区一区二在线播放| 亚洲精品一区二区三区日韩|