SQLAlchemy的CRUD操作

本文详细介绍了如何在Flask应用中使用SQLAlchemy进行数据的增删改查操作,包括Python对象的创建、数据库对话的添加与提交,以及各种查询、更新和删除的方法。

SQLAlchemy在 flask中的CRUD操做

Creat

1 创建Python对象(实例化模型类)
2 添加新创建的记录到对数据库对话
3 提交数据库对话

from app import db, Note
note1 = Note(body=1)
db.session.add(note1)
db.session.commit()

首先从app模块导入db对象和Note类,然后创建note1对象实例,使用关键字参数传入字段数据。我们的Note继承自db model基类,db model基类会提供一个构造参数,接受匹配类的属性名称的参数值,并赋给对应的类属性,所以我们不用自己创建Note类的定义构造方法
类的构造方法指的是 class的 init_(self,**arg, **kwargs)这个方法

Read

<模型类>.query.<过滤方法>.<查询方法>

查询方法:
all
first
one
get
count
one_or_none
first_or_none
get_or_404
paginate
with_parent

过滤器:
查询过滤器名称
filter
filter_by
order_by
limit
group_by
offset

	# smaples
	
	Node.query.all()
	Node.query.filter(Node.body=="SHAVE").first()
除了= , !=之外的逻辑判断表达式
LIke
IN
NOT IN
AND
OR
filter(Note.body.like('%foo%'))
filter(Note.body.in_([]))
filter(and_(Note.body=='foo', Note.title == 'FooBar'))
filter(or_(Note.body=='foo', Note.body=='bar'))

Updata

note = Note.query.get(2)  # primary key == 2
note.body = 'someting you want'
db.commit()

Deletef

note = Note.query.get(2)  # primary key == 2
db.session.delete(note)
db.commit()
### SQLAlchemy CRUD Plus 使用指南 #### 安装 为了使用 `SQLAlchemy` 和其扩展功能来实现 CRUD 操作,可以先通过 Python 的包管理工具 pip 来安装必要的依赖项。以下是安装命令: ```bash pip install sqlalchemy ``` 如果需要支持异步操作,则还需要额外安装 `asyncio` 支持的相关库[^1]: ```bash pip install asyncpg # 对于 PostgreSQL 数据库的支持 pip install databases # 提供异步数据库连接池支持 ``` 对于更高级的功能(如 Tortoise ORM 或其他框架),可以根据具体需求进一步扩展。 --- #### 配置 配置 `SQLAlchemy` 主要涉及创建引擎、会话以及定义模型类。以下是一个基本的配置流程示例代码: ```python from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # 创建数据库引擎 (SQLite 示例) engine = create_engine('sqlite:///example.db', echo=True) # 声明基类 Base = declarative_base() # 定义数据模型 class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) age = Column(Integer) # 初始化会话工厂 Session = sessionmaker(bind=engine) session = Session() ``` 上述代码展示了如何设置一个简单的 SQLite 数据库并定义了一个名为 `User` 的表结构[^2]。 --- #### 示例代码:CRUD 操作 基于前面的配置,下面是一些常见的 CRUD 操作实例: ##### **C**reate (创建) 向数据库中插入一条记录: ```python new_user = User(name="Alice", age=30) session.add(new_user) session.commit() # 将更改保存到数据库 ``` ##### **R**ead (读取) 查询特定条件下的记录: ```python user = session.query(User).filter_by(name="Alice").first() print(f"Name: {user.name}, Age: {user.age}") ``` ##### **U**pdate (更新) 修改已有的记录: ```python alice = session.query(User).filter_by(name="Alice").first() if alice: alice.age = 31 session.commit() ``` ##### **D**elete (删除) 移除指定的记录: ```python alice = session.query(User).filter_by(name="Alice").first() if alice: session.delete(alice) session.commit() ``` 以上代码片段涵盖了基础的增删改查逻辑。 --- #### 教程推荐 官方文档始终是最权威的学习资源之一,建议阅读以下链接获取更多细节: - [SQLAlchemy Official Documentation](https://docs.sqlalchemy.org/en/14/) - 关于异步支持的内容可查阅专门章节 此外,在实际项目开发过程中可能还会涉及到 Pydantic 模型验证等功能模块,这些可以通过导入相应的子模块完成初始化工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值