fastapi篇(七)
SQLAlchemy
orm框架,操作数据库的框架,把数据库实体高度封装成了python对象;有了它,也就意味着我们可以在不熟悉sql语句的同时,对数据库执行操作
在视图函数中,主要涉及和数据库的交互,最基本的就是crud
1、创建数据库引擎函数
from sqlalchemy import create_engine
mysql_engine = create_engine(f"mysql+pymysql://root:root123456@172.23.60.12:5688/accounting_company", encoding='utf-8')
2、创建本地会话
from sqlalchemy.orm import sessionmaker, declarative_base
def db_session(database='sqlite'):
if database == 'mysql':
return sessionmaker(bind=mysql_engine(), expire_on_commit=False)()
if not getattr(local, "session", None):
local.session = sessionmaker(bind=engine, expire_on_commit=False)()
return local.session
3、创建数据库模型基类
Base = declarative_base()
4、会话执行crud
C:
with db_session() as session:
session.add(data)
session.commit()
R:
with db_session(database=database) as session:
row = session.query(table).filter_by(id=request.id).first()
U:
with db_session(database=database) as session: count = session.query(table).filter_by(**request.filter).update(request.values) session.commit()
D:
with db_session() as session: count = session.query(table).filter_by(**request.filter).delete() session.commit()
会话除了调用固定方法外,还可以执行原生的sql语句
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!