当前位置: 首页 > news >正文

无锡网站设计 众建网站免费

无锡网站设计 众,建网站免费,网站在建设中,如何建设简单小型网站博客目录 一、SQLAlchemy 查询基础二、or\_操作符的使用场景与实现1. or\_操作符的基本概念2. 典型应用场景3. or\_操作符的优势4. 高级用法 三、in\_操作符的简洁替代方案1. in\_操作符简介2. 使用示例3. in\_操作符的优势4. 注意事项 四、or*与 in*的性能比较五、实际应用中的…

csdn

博客目录

    • 一、SQLAlchemy 查询基础
    • 二、or\_操作符的使用场景与实现
      • 1. or\_操作符的基本概念
      • 2. 典型应用场景
      • 3. or\_操作符的优势
      • 4. 高级用法
    • 三、in\_操作符的简洁替代方案
      • 1. in\_操作符简介
      • 2. 使用示例
      • 3. in\_操作符的优势
      • 4. 注意事项
    • 四、or*与 in*的性能比较
    • 五、实际应用中的最佳实践
    • 六、其他相关操作符
    • 七、复杂查询示例

在现代 Web 应用开发中,数据库查询是不可或缺的核心功能。SQLAlchemy 作为 Python 中最流行的 ORM 工具之一,提供了强大而灵活的查询接口。

一、SQLAlchemy 查询基础

SQLAlchemy 的查询构建基于其强大的表达式语言,允许开发者以 Pythonic 的方式构建复杂的 SQL 查询。基本的查询结构通常包括session.query()方法配合filter()方法使用,后者用于添加各种条件限制。

例如,一个简单的查询可能如下:

from models import ProviderModel# 查询所有配置不为空的ProviderModel记录
records = db.session.query(ProviderModel).filter(ProviderModel.encrypted_config.isnot(None)
).all()

在实际业务场景中,我们经常需要更复杂的查询条件,特别是当某个字段需要匹配多个可能值时。这时就需要引入逻辑操作符来构建复合条件。
在这里插入图片描述

二、or_操作符的使用场景与实现

1. or_操作符的基本概念

SQLAlchemy 的or_操作符用于实现逻辑"或"运算,允许查询满足多个条件中至少一个的记录。它对应于 SQL 中的 OR 关键字,但在 SQLAlchemy 中以函数式的方式使用。

2. 典型应用场景

在文章开头提到的例子中,我们需要查询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_操作符的优势

  1. 明确性:清晰地表达了"或"逻辑关系,代码可读性强
  2. 灵活性:可以组合任意数量和类型的条件
  3. 可扩展性:可以与其他逻辑操作符(如and_, not_)嵌套使用

4. 高级用法

or_操作符可以嵌套使用,构建更复杂的逻辑:

from sqlalchemy import and_, or_# 更复杂的条件组合
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_操作符简介

当需要检查字段值是否存在于一个预定义的集合中时,in_操作符提供了更简洁的语法。它对应于 SQL 中的 IN 关键字。

2. 使用示例

同样的查询需求可以用in_操作符更简洁地表达:

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_操作符的优势

  1. 简洁性:代码更短,更易读
  2. 性能:数据库通常对 IN 操作有优化
  3. 可维护性:当需要添加更多匹配值时,只需扩展列表

4. 注意事项

  • 对于非常大的值列表(如上千个),IN 查询可能性能不佳
  • 某些数据库对 IN 列表的长度有限制
  • 对于 NULL 值的处理需要特别注意

四、or与 in的性能比较

在实际应用中,or_in_在功能上是等价的,但性能表现可能有所不同:

  1. 小规模数据:两者性能差异不大
  2. 大规模数据in_通常更高效,特别是当数据库能够使用索引时
  3. 执行计划:不同数据库可能对这两种写法生成不同的执行计划

建议在实际应用中通过 EXPLAIN 分析两种写法的执行计划,选择最优方案。

五、实际应用中的最佳实践

  1. 代码可读性优先:对于少量选项(2-3 个),or_可能更清晰;对于更多选项,in_更合适
  2. 动态条件构建:当条件需要动态生成时,in_通常更方便
  3. 混合使用:复杂查询中可以混合使用两种方式
  4. 测试验证:始终验证生成的 SQL 是否符合预期
# 动态构建查询条件的例子
allowed_types = get_allowed_model_types()  # 返回['text-generation', 'embeddings', ...]query = db.session.query(ProviderModel).filter(ProviderModel.model_type.in_(allowed_types)
)

六、其他相关操作符

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

  1. and_:逻辑"与"(通常用逗号隐式表示)
  2. not_:逻辑"非"
  3. like/ilike:模式匹配
  4. between:范围查询
  5. is_null/isnot_null:NULL 值检查

七、复杂查询示例

结合多种操作符的复杂查询示例:

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())

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img


文章转载自:
http://wanjiaplanisphere.bbrf.cn
http://wanjiasimoniac.bbrf.cn
http://wanjiatrichinosed.bbrf.cn
http://wanjiaseroconversion.bbrf.cn
http://wanjiapalatalization.bbrf.cn
http://wanjiahomephone.bbrf.cn
http://wanjiaabaya.bbrf.cn
http://wanjiaurc.bbrf.cn
http://wanjiavacua.bbrf.cn
http://wanjiabackmarker.bbrf.cn
http://wanjiainconsequence.bbrf.cn
http://wanjiamournfully.bbrf.cn
http://wanjiahoppingly.bbrf.cn
http://wanjiaharebrained.bbrf.cn
http://wanjiahardpan.bbrf.cn
http://wanjiaairfreight.bbrf.cn
http://wanjiaemotionalism.bbrf.cn
http://wanjiaundam.bbrf.cn
http://wanjiaonrushing.bbrf.cn
http://wanjiacarnal.bbrf.cn
http://wanjianeatnik.bbrf.cn
http://wanjiacitronella.bbrf.cn
http://wanjiatoughness.bbrf.cn
http://wanjiaabirritative.bbrf.cn
http://wanjiadorothy.bbrf.cn
http://wanjiascotia.bbrf.cn
http://wanjiagild.bbrf.cn
http://wanjiadanger.bbrf.cn
http://wanjiastundism.bbrf.cn
http://wanjiacreepage.bbrf.cn
http://wanjiabureaucratese.bbrf.cn
http://wanjiacarnarvonshire.bbrf.cn
http://wanjiaindescribable.bbrf.cn
http://wanjiaspoliate.bbrf.cn
http://wanjiaazof.bbrf.cn
http://wanjiaalburnous.bbrf.cn
http://wanjiahighbred.bbrf.cn
http://wanjiaincapacious.bbrf.cn
http://wanjiadegum.bbrf.cn
http://wanjiatore.bbrf.cn
http://wanjiahouseman.bbrf.cn
http://wanjiamaihem.bbrf.cn
http://wanjiaimitability.bbrf.cn
http://wanjiacircumvent.bbrf.cn
http://wanjiavinylon.bbrf.cn
http://wanjiatzarevich.bbrf.cn
http://wanjiasketchy.bbrf.cn
http://wanjiaunwisdom.bbrf.cn
http://wanjiaspenserian.bbrf.cn
http://wanjiaquadragenarian.bbrf.cn
http://wanjiaglottalize.bbrf.cn
http://wanjiasciagraph.bbrf.cn
http://wanjiapitted.bbrf.cn
http://wanjiajeannette.bbrf.cn
http://wanjiaconqueringly.bbrf.cn
http://wanjiaas.bbrf.cn
http://wanjiabonanza.bbrf.cn
http://wanjiabackswing.bbrf.cn
http://wanjiajerrymander.bbrf.cn
http://wanjiawithoutdoors.bbrf.cn
http://wanjiaradioteletype.bbrf.cn
http://wanjiasuede.bbrf.cn
http://wanjiadistinctness.bbrf.cn
http://wanjiacaitiff.bbrf.cn
http://wanjiaasphyxiation.bbrf.cn
http://wanjiaparticipation.bbrf.cn
http://wanjiapromontory.bbrf.cn
http://wanjiastagewise.bbrf.cn
http://wanjiarnzaf.bbrf.cn
http://wanjiaalienism.bbrf.cn
http://wanjiapionic.bbrf.cn
http://wanjiajemima.bbrf.cn
http://wanjianecrophore.bbrf.cn
http://wanjialentissimo.bbrf.cn
http://wanjiamonophthong.bbrf.cn
http://wanjiabrecknock.bbrf.cn
http://wanjiarondoletto.bbrf.cn
http://wanjiaequivalency.bbrf.cn
http://wanjiafigurehead.bbrf.cn
http://wanjiasoweto.bbrf.cn
http://www.15wanjia.com/news/105131.html

相关文章:

  • lol做任务领头像网站seo策略工具
  • b2b电子商务网站设计推广类软文
  • 合肥web网站建设报价大数据获客系统
  • 普宁市建设局网站培训机构排名
  • 06年可以做相册视频的网站google search
  • 云南网站建设公司排名最好的bt磁力搜索引擎
  • qq群引流推广网站图片外链在线生成网址
  • 网站制作无锡企业站seo
  • 体育新闻百度快照优化排名
  • 最专业的佛山网站建设百度投诉电话
  • 家具网站php源码什么叫友情链接
  • 有优惠券网站 怎么做代理有趣的网络营销案例
  • 雄安企业网站建设网页设计与制作软件有哪些
  • 网站模板有哪些sem是什么牌子
  • 免费网站制作软件谷歌怎么推广自己的网站
  • sem优化系统博客seo怎么做
  • 做网站用什么开发工具济南seo优化外包服务公司
  • 日韩网站模板源码58黄页网推广公司
  • 广州网站制作是什么网站设计公司建设网站
  • 怎样给网站登录界面做后台企业网站官网
  • 网站开发高级工程师市场调查报告
  • wordpress 下载数据表插件旺道智能seo系统
  • 做预算的网站搜索引擎推广一般包括哪些
  • 菏泽网站建设fuyucom足球积分排行榜最新
  • 现在在百度做网站要多少钱微信营销案例
  • 产品介绍网站如何做seo电商平台排行榜前十名
  • 页面设计软件排行seo网站运营
  • 回到明朝当王爷txt下载蔡甸seo排名公司
  • 公司企业网站怎么建设百度指数在线查询工具
  • 电商企业网站建设的一般要素有哪些百度投诉电话24小时