中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

無錫網(wǎng)站設(shè)計(jì) 眾海外營銷推廣服務(wù)

無錫網(wǎng)站設(shè)計(jì) 眾,海外營銷推廣服務(wù),網(wǎng)站建設(shè)設(shè)計(jì) 網(wǎng)絡(luò)服務(wù),網(wǎng)站備案部門博客目錄 一、SQLAlchemy 查詢基礎(chǔ)二、or\_操作符的使用場(chǎng)景與實(shí)現(xiàn)1. or\_操作符的基本概念2. 典型應(yīng)用場(chǎng)景3. or\_操作符的優(yōu)勢(shì)4. 高級(jí)用法 三、in\_操作符的簡潔替代方案1. in\_操作符簡介2. 使用示例3. in\_操作符的優(yōu)勢(shì)4. 注意事項(xiàng) 四、or*與 in*的性能比較五、實(shí)際應(yīng)用中的…

csdn

博客目錄

    • 一、SQLAlchemy 查詢基礎(chǔ)
    • 二、or\_操作符的使用場(chǎng)景與實(shí)現(xiàn)
      • 1. or\_操作符的基本概念
      • 2. 典型應(yīng)用場(chǎng)景
      • 3. or\_操作符的優(yōu)勢(shì)
      • 4. 高級(jí)用法
    • 三、in\_操作符的簡潔替代方案
      • 1. in\_操作符簡介
      • 2. 使用示例
      • 3. in\_操作符的優(yōu)勢(shì)
      • 4. 注意事項(xiàng)
    • 四、or*與 in*的性能比較
    • 五、實(shí)際應(yīng)用中的最佳實(shí)踐
    • 六、其他相關(guān)操作符
    • 七、復(fù)雜查詢示例

在現(xiàn)代 Web 應(yīng)用開發(fā)中,數(shù)據(jù)庫查詢是不可或缺的核心功能。SQLAlchemy 作為 Python 中最流行的 ORM 工具之一,提供了強(qiáng)大而靈活的查詢接口。

一、SQLAlchemy 查詢基礎(chǔ)

SQLAlchemy 的查詢構(gòu)建基于其強(qiáng)大的表達(dá)式語言,允許開發(fā)者以 Pythonic 的方式構(gòu)建復(fù)雜的 SQL 查詢?;镜牟樵兘Y(jié)構(gòu)通常包括session.query()方法配合filter()方法使用,后者用于添加各種條件限制。

例如,一個(gè)簡單的查詢可能如下:

from models import ProviderModel# 查詢所有配置不為空的ProviderModel記錄
records = db.session.query(ProviderModel).filter(ProviderModel.encrypted_config.isnot(None)
).all()

在實(shí)際業(yè)務(wù)場(chǎng)景中,我們經(jīng)常需要更復(fù)雜的查詢條件,特別是當(dāng)某個(gè)字段需要匹配多個(gè)可能值時(shí)。這時(shí)就需要引入邏輯操作符來構(gòu)建復(fù)合條件。
在這里插入圖片描述

二、or_操作符的使用場(chǎng)景與實(shí)現(xiàn)

1. or_操作符的基本概念

SQLAlchemy 的or_操作符用于實(shí)現(xiàn)邏輯"或"運(yùn)算,允許查詢滿足多個(gè)條件中至少一個(gè)的記錄。它對(duì)應(yīng)于 SQL 中的 OR 關(guān)鍵字,但在 SQLAlchemy 中以函數(shù)式的方式使用。

2. 典型應(yīng)用場(chǎng)景

在文章開頭提到的例子中,我們需要查詢model_type字段值為’text-generation’或’embeddings’的記錄。使用or_操作符的解決方案如下:

from sqlalchemy import or_provider_models = db.session.query(ProviderModel).filter(ProviderModel.encrypted_config.isnot(None),ProviderModel.provider_name != 'openai',or_(ProviderModel.model_type == 'text-generation',ProviderModel.model_type == 'embeddings'),ProviderModel.conf_type == '0'
).all()

3. or_操作符的優(yōu)勢(shì)

  1. 明確性:清晰地表達(dá)了"或"邏輯關(guān)系,代碼可讀性強(qiáng)
  2. 靈活性:可以組合任意數(shù)量和類型的條件
  3. 可擴(kuò)展性:可以與其他邏輯操作符(如and_, not_)嵌套使用

4. 高級(jí)用法

or_操作符可以嵌套使用,構(gòu)建更復(fù)雜的邏輯:

from sqlalchemy import and_, or_# 更復(fù)雜的條件組合
query = db.session.query(ProviderModel).filter(or_(and_(ProviderModel.model_type == 'text-generation',ProviderModel.provider_name.like('%ai%')),and_(ProviderModel.model_type == 'embeddings',ProviderModel.conf_type.in_(['0', '1'])))
)

三、in_操作符的簡潔替代方案

1. in_操作符簡介

當(dāng)需要檢查字段值是否存在于一個(gè)預(yù)定義的集合中時(shí),in_操作符提供了更簡潔的語法。它對(duì)應(yīng)于 SQL 中的 IN 關(guān)鍵字。

2. 使用示例

同樣的查詢需求可以用in_操作符更簡潔地表達(dá):

provider_models = db.session.query(ProviderModel).filter(ProviderModel.encrypted_config.isnot(None),ProviderModel.provider_name != 'openai',ProviderModel.model_type.in_(['text-generation', 'embeddings']),ProviderModel.conf_type == '0'
).all()

3. in_操作符的優(yōu)勢(shì)

  1. 簡潔性:代碼更短,更易讀
  2. 性能:數(shù)據(jù)庫通常對(duì) IN 操作有優(yōu)化
  3. 可維護(hù)性:當(dāng)需要添加更多匹配值時(shí),只需擴(kuò)展列表

4. 注意事項(xiàng)

  • 對(duì)于非常大的值列表(如上千個(gè)),IN 查詢可能性能不佳
  • 某些數(shù)據(jù)庫對(duì) IN 列表的長度有限制
  • 對(duì)于 NULL 值的處理需要特別注意

四、or與 in的性能比較

在實(shí)際應(yīng)用中,or_in_在功能上是等價(jià)的,但性能表現(xiàn)可能有所不同:

  1. 小規(guī)模數(shù)據(jù):兩者性能差異不大
  2. 大規(guī)模數(shù)據(jù)in_通常更高效,特別是當(dāng)數(shù)據(jù)庫能夠使用索引時(shí)
  3. 執(zhí)行計(jì)劃:不同數(shù)據(jù)庫可能對(duì)這兩種寫法生成不同的執(zhí)行計(jì)劃

建議在實(shí)際應(yīng)用中通過 EXPLAIN 分析兩種寫法的執(zhí)行計(jì)劃,選擇最優(yōu)方案。

五、實(shí)際應(yīng)用中的最佳實(shí)踐

  1. 代碼可讀性優(yōu)先:對(duì)于少量選項(xiàng)(2-3 個(gè)),or_可能更清晰;對(duì)于更多選項(xiàng),in_更合適
  2. 動(dòng)態(tài)條件構(gòu)建:當(dāng)條件需要?jiǎng)討B(tài)生成時(shí),in_通常更方便
  3. 混合使用:復(fù)雜查詢中可以混合使用兩種方式
  4. 測(cè)試驗(yàn)證:始終驗(yàn)證生成的 SQL 是否符合預(yù)期
# 動(dòng)態(tài)構(gòu)建查詢條件的例子
allowed_types = get_allowed_model_types()  # 返回['text-generation', 'embeddings', ...]query = db.session.query(ProviderModel).filter(ProviderModel.model_type.in_(allowed_types)
)

六、其他相關(guān)操作符

除了or_in_,SQLAlchemy 還提供了其他有用的操作符:

  1. and_:邏輯"與"(通常用逗號(hào)隱式表示)
  2. not_:邏輯"非"
  3. like/ilike:模式匹配
  4. between:范圍查詢
  5. is_null/isnot_null:NULL 值檢查

七、復(fù)雜查詢示例

結(jié)合多種操作符的復(fù)雜查詢示例:

from sqlalchemy import and_, or_, not_query = db.session.query(ProviderModel).filter(ProviderModel.encrypted_config.isnot(None),or_(and_(ProviderModel.provider_name != 'openai',ProviderModel.model_type.in_(['text-generation', 'embeddings'])),and_(ProviderModel.provider_name == 'special',not_(ProviderModel.model_type == 'deprecated'))),ProviderModel.conf_type == '0'
).order_by(ProviderModel.created_at.desc())

覺得有用的話點(diǎn)個(gè)贊 👍🏻 唄。
??????本人水平有限,如有紕漏,歡迎各位大佬評(píng)論批評(píng)指正!😄😄😄

💘💘💘如果覺得這篇文對(duì)你有幫助的話,也請(qǐng)給個(gè)點(diǎn)贊、收藏下吧,非常感謝!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且長,行則將至,讓我們一起加油吧!🌙🌙🌙

img

http://m.risenshineclean.com/news/64786.html

相關(guān)文章:

  • 招聘網(wǎng)站建設(shè)需求分析十大計(jì)算機(jī)培訓(xùn)學(xué)校
  • 做網(wǎng)站的前端框架百度推廣投訴中心
  • 風(fēng)景旅游網(wǎng)站建設(shè)的設(shè)計(jì)思路無錫營銷型網(wǎng)站建站
  • 做網(wǎng)站需要哪些審核廣州seo效果
  • 中國網(wǎng)站建設(shè)公司網(wǎng)絡(luò)營銷和傳統(tǒng)營銷的關(guān)系
  • 高安網(wǎng)站制作一元手游平臺(tái)app
  • 做定制網(wǎng)站引流app推廣軟件
  • 整套vi設(shè)計(jì)都包含哪些石家莊網(wǎng)站seo
  • 怎樣創(chuàng)作一個(gè)網(wǎng)站免費(fèi)建網(wǎng)站哪家好
  • 營銷型網(wǎng)站建設(shè)公司價(jià)格恩施seo整站優(yōu)化哪家好
  • 網(wǎng)站服務(wù)器如何搭建杭州seo關(guān)鍵詞優(yōu)化公司
  • 小廠建網(wǎng)站網(wǎng)推平臺(tái)有哪些
  • 長春做網(wǎng)站建設(shè)的公司視頻號(hào)下載器手機(jī)版
  • 成都微網(wǎng)站系統(tǒng)網(wǎng)站seo診斷報(bào)告
  • 網(wǎng)站架構(gòu)包括哪些廣州官方新聞
  • 做網(wǎng)站開發(fā)有什么專業(yè)證seo專家是什么意思
  • 企業(yè)招聘官網(wǎng)北京seo網(wǎng)站開發(fā)
  • 騰訊cdn api wordpressseo入門教學(xué)
  • 平安銀行官方網(wǎng)站seo網(wǎng)站推廣的主要目的包括
  • 商用網(wǎng)站開發(fā)計(jì)劃書北京優(yōu)化seo公司
  • 獅山網(wǎng)站建設(shè)電商運(yùn)營一天都干啥
  • dede打包好的網(wǎng)站怎么提取模板杭州關(guān)鍵詞優(yōu)化服務(wù)
  • 商城網(wǎng)站源碼下載全網(wǎng)搜索引擎
  • wordpress 移動(dòng)app網(wǎng)絡(luò)優(yōu)化工程師吃香嗎
  • 福州定制網(wǎng)站開發(fā)制作搜索引擎關(guān)鍵詞seo優(yōu)化公司
  • 讓做網(wǎng)站策劃沒經(jīng)驗(yàn)怎么辦網(wǎng)站seo優(yōu)化案例
  • 網(wǎng)站維護(hù)中怎么解決營銷策劃公司取名大全
  • 做網(wǎng)站主要來源seo排名優(yōu)化表格工具
  • wordpress 結(jié)構(gòu)解析關(guān)鍵詞seo教程
  • 類似小紅書網(wǎng)站開發(fā)費(fèi)用營銷軟文模板