sqlalchemy-运算符like,notlike,in_,notin_,is_,isnot,startswith,endswith,contains,desc,asc,between,distin

like,notlike,in_,notin_,is_,isnot,startswith,endswith,contains,desc,asc,between,distinct

本次数据查询参考模型类和数据如下:(Flask环境)

class Protocols(db.Model)
 id = db.Column(db.Integer, primary_key=True, autoincrement=True, nullable=False, comment="主键id")
 protocolName = db.Column(db.String(255), unique=True, comment="协议名称")
 parent_protocol = db.Column(db.String(255), comment="父协议")

在这里插入图片描述

# 查询代码如下:
 	0.like:模糊查询
    result0 = db.session.query(Protocols.protocolName).filter(Protocols.protocolName.like("%" + "cp" + "%")).all()
    1.notlike:模糊查询,不在查询范围内
    result1 = db.session.query(Protocols.protocolName).filter(Protocols.protocolName.notlike("%" + "cp" + "%")).all()
    2.in_:在某个范围内,参数为元组或者列表类型的数据
    result2 = db.session.query(Protocols.protocolName).filter(Protocols.id.in_((1, 2))).all()
    3.notin_:和in_相反
    result3 = db.session.query(Protocols.protocolName).filter(Protocols.id.notin_((1, 2))).all()
    4.is_:是否为null的比较
    result4 = db.session.query(Protocols.protocolName).filter(Protocols.protocolName.is_(None)).all()
    5.isnot:不为null
    result5 = db.session.query(Protocols.protocolName).filter(Protocols.protocolName.isnot(None)).all()
    6.startswith:以某个数据开头
    result6 = db.session.query(Protocols.protocolName).filter(Protocols.protocolName.startswith("t")).all()
    7.endswith:以某数据结尾
    result7 = db.session.query(Protocols.protocolName).filter(Protocols.protocolName.endswith("t")).all()
    8.contains:数据中包含,和like功能差不多
    result8 = db.session.query(Protocols.protocolName).filter(Protocols.protocolName.contains("cp")).all()
    9.desc:对查询出来的数据进行降序排序
    result9 = db.session.query(Protocols.protocolName).order_by(Protocols.id.desc()).all()
    10.asc:对查询出来的数据进行升序排序
    result10 = db.session.query(Protocols.protocolName).order_by(Protocols.id.asc()).all()
    11.between:某个字段的参数在某个范围内
    result11 = db.session.query(Protocols.protocolName).filter(Protocols.id.between(1, 3)).all()
    12.distinct:对查询出来的数据进行去重
    result12 = db.session.query(Protocols.parent_protocol).distinct().all()

上面查询语句获取的结果

[('dhcp',), ('tcp',)]
[('ah',), ('atsvc',), ('bootpc',), ('bootps',), ('browser',), ('dns',), ('esp',), ('ftp',), ('http',), ('https',), ('icmp',), ('imap',), ('netbios-dgm',), ('netbios-ns',), ('netbios-ssn',), ('netstat',), ('ntp',), ('pop3',), ('rdp',), ('rtsp',), ('sctp',), ('smb',), ('smtp',), ('snmp',), ('snmp trap',), ('ssh',), ('telent',), ('tftp',), ('udp',), ('vnc',)]
[('ssh',), ('https',)]
[('telent',), ('rdp',), ('ntp',), ('http',), ('ftp',), ('vnc',), ('smb',), ('smtp',), ('pop3',), ('imap',), ('netstat',), ('netbios-ns',), ('netbios-dgm',), ('netbios-ssn',), ('browser',), ('atsvc',), ('rtsp',), ('dns',), ('bootpc',), ('snmp',), ('snmp trap',), ('bootps',), ('tftp',), ('dhcp',), ('icmp',), ('tcp',), ('udp',), ('esp',), ('ah',), ('sctp',)]
[]
[('ah',), ('atsvc',), ('bootpc',), ('bootps',), ('browser',), ('dhcp',), ('dns',), ('esp',), ('ftp',), ('http',), ('https',), ('icmp',), ('imap',), ('netbios-dgm',), ('netbios-ns',), ('netbios-ssn',), ('netstat',), ('ntp',), ('pop3',), ('rdp',), ('rtsp',), ('sctp',), ('smb',), ('smtp',), ('snmp',), ('snmp trap',), ('ssh',), ('tcp',), ('telent',), ('tftp',), ('udp',), ('vnc',)]
[('tcp',), ('telent',), ('tftp',)]
[('netstat',), ('telent',)]
[('dhcp',), ('tcp',)]
[('sctp',), ('ah',), ('esp',), ('udp',), ('tcp',), ('icmp',), ('dhcp',), ('tftp',), ('bootps',), ('snmp trap',), ('snmp',), ('bootpc',), ('dns',), ('rtsp',), ('atsvc',), ('browser',), ('netbios-ssn',), ('netbios-dgm',), ('netbios-ns',), ('netstat',), ('imap',), ('pop3',), ('smtp',), ('smb',), ('vnc',), ('ftp',), ('http',), ('ntp',), ('rdp',), ('telent',), ('https',), ('ssh',)]
[('ssh',), ('https',), ('telent',), ('rdp',), ('ntp',), ('http',), ('ftp',), ('vnc',), ('smb',), ('smtp',), ('pop3',), ('imap',), ('netstat',), ('netbios-ns',), ('netbios-dgm',), ('netbios-ssn',), ('browser',), ('atsvc',), ('rtsp',), ('dns',), ('bootpc',), ('snmp',), ('snmp trap',), ('bootps',), ('tftp',), ('dhcp',), ('icmp',), ('tcp',), ('udp',), ('esp',), ('ah',), ('sctp',)]
[('ssh',), ('https',), ('telent',)]
[('tcp',), ('tcp,udp',), ('udp',), ('ip',)]

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 中,可以使用 `func.group_concat()` 函数来实现类似于 MySQL 中的 `GROUP_CONCAT` 函数的功能。`func.group_concat()` 函数可以将一个列的所有值拼接成一个字符串,并且可以指定分隔符。 下面是一个简单的例子,假设有一个 `Book` 表格,其中包含了 `id` 和 `title` 两个列,我们想要将所有的书名拼接成一个字符串并以 `,` 分隔: ```python from sqlalchemy import create_engine, Column, Integer, String, func from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base engine = create_engine('mysql+pymysql://user:password@host:port/database', echo=True) Session = sessionmaker(bind=engine) session = Session() Base = declarative_base() class Book(Base): __tablename__ = 'books' id = Column(Integer, primary_key=True) title = Column(String(255)) result = session.query(func.group_concat(Book.title, separator=',')).scalar() print(result) ``` 在上面的代码中,我们使用 `func.group_concat()` 函数将 `Book` 表格中的所有书名拼接成一个字符串,并以 `,` 分隔。`func.group_concat()` 函数的第一个参数是要拼接的列,第二个参数是分隔符(可选,默认为 `,`)。`session.query(func.group_concat(Book.title, separator=','))` 会生成一个 SQL 查询语句类似于 `SELECT GROUP_CONCAT(title SEPARATOR ',') FROM books`,使用 `scalar()` 方法可以获取查询结果。 希望这个例子能够帮助你理解如何在 SQLAlchemy 中使用 `func.group_concat()` 函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值