sqlalchemy.sql包常用方法

本文深入探讨了使用Python的SQLAlchemy库进行复杂SQL查询的方法,包括case表达式、聚合函数、union_all组合查询及条件过滤等高级功能,帮助开发者更高效地处理数据库操作。
部署运行你感兴趣的模型镜像

Sqlalchemy

Sqlalchemy.sql

  • 通过这个包可以帮助我们用python代码实现sql
from sqlalchemy import func
from sqlalchemy.sql import case, select, label, union_all, expression, column, or_, and_


db.session.query(
	# sql相当于 case when level_id =="" then 0 else level_id as level_id
	label("level_id", case([(model.level_id == "", "0")],
                                         else_=model.level_id)),
	# 相当于 0 as total
				
				expression.bindparam("total", 0).label("total")
).filter()


try:
	# select 与 sql中select用法一致 注意里面字段放在列表里
    query_res = select(["id", "name",
                func.sum(column("total")), # 聚合函数
                func.sum(column("count")),
                ]). \
    # 相当于from union_all 同 union_all 里面可以放多个查询的组合
    # where 条件查询 多个条件用and_和or_组合
        select_from(union_all(*qy_list).alias('ret_1')).where(and_(*cond_list)). \
        group_by("id", "name")
    all_data = db.session.execute(query_res).fetchall()
except Exception as e:
    
    print(e)

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

SQLAlchemy是Python的SQL工具和对象关系映射器,为应用程序开发者提供强大且灵活的SQL操作能力,提供了一系列常用方法,以下是对其部分常用方法的介绍: ### 数据库连接 使用`create_engine`方法创建数据库引擎,连接到数据库。以连接MySQL数据库为例: ```python from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:password@127.0.0.1:3306/database_name?charset=utf8") ``` ### 创建表及模式 使用`declarative_base`创建基类,定义表结构的类继承该基类,使用`Column`定义列,最后使用`Base.metadata.create_all(engine)`创建表。示例如下: ```python from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String Base = declarative_base() class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True) name = Column(String(32)) Base.metadata.create_all(engine) ``` ### 创建会话 使用`sessionmaker`创建会话工厂,实例化会话工厂得到会话对象,用于执行数据库操作。 ```python from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind=engine) session = Session() ``` ### 基本操作方法 - **添加对象**:使用`session.add()`方法添加单个对象,使用`session.add_all()`方法添加多个对象,最后使用`session.commit()`提交事务。 ```python new_user = User(name='John') session.add(new_user) session.commit() ``` - **查询对象**:使用`session.query()`方法进行查询,可结合`filter()`、`filter_by()`等方法进行条件过滤。 ```python # 查询所有用户 users = session.query(User).all() # 根据条件查询用户 user = session.query(User).filter(User.name == 'John').first() ``` - **更新对象**:修改对象属性后,使用`session.commit()`提交事务使更改生效。 ```python user = session.query(User).filter(User.name == 'John').first() user.name = 'Mike' session.commit() ``` - **删除对象**:使用`session.delete()`方法删除对象,最后使用`session.commit()`提交事务。 ```python user = session.query(User).filter(User.name == 'Mike').first() session.delete(user) session.commit() ``` ### 嵌入SQL语句 - 在查询中嵌入SQL语句:使用`text()`函数嵌入SQL语句。 ```python from sqlalchemy import text result = session.query(User).from_statement(text("SELECT * FROM user WHERE name = 'John'")).all() ``` - 通过`Engine`对象执行SQL语句:使用`engine.execute()`方法执行SQL语句。 ```python result = engine.execute("SELECT * FROM user") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值