SQLAlchemy ORM构建四步闭环:定义模型(继承Base、Column声明字段)、配置连接(create_engine+sessionmaker)、创建表(Base.metadata.create_all)、CRUD操作(session增删改查并commit)。
用 SQLAlchemy 构建 ORM 系统不难,关键是把几个核心环节串清楚:定义模型、配置连接、创建表、操作数据。下面按实际开发顺序一步步说清楚。
模型就是 Python 类,对应数据库里的表。每个类继承 db.Model(Flask-SQLAlchemy)或直接用 Base(原生 SQLAlchemy),字段用 Column 定义,类型选对很关键。
比如用户表:
from sqlalchemy import Column, Integer, String, Boolean from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()
class User(Base): tablename = 'users' id = Column(Integer, primary_key=True) name = Column(String(50), nullable=False) email = Column(String(120), unique=True) is_active = Column(Boolean, default=True)
注意点:
配置数据库连接与初始化连接字符串格式是:dialect+driver://username:password@host:port/database。本地开发常用 SQLite,简单省事:
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmakerengine = create_engine('sqlite:///app.db', echo=True) # echo=True 查看生成的 SQL SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) session = SessionLocal()
常见情况:
模型写好了,数据库里还没表。调用 Base.metadata.create_all(engine) 就能自动生成:
Base.metadata.create_all(engine)
这一步只建不存在的表,已有表不会被改动。开发中如果改了模型字段,不能靠它自动更新 —— 要么删库重来(调试期可用),要么用 alembic 做迁移。
小技巧:
if not engine.dialect.has_table(engine.connect(), 'users'):
create_engine('sqlite:///:memory:')
所有操作都通过 session 完成,记得最后 commit() 或 rollback()。
插入一条:
new_user = User(name='张三', email='zhang@example.com') session.add(new_user) session.commit() # 实际写入
查询:
# 查全部 users = session.query(User).all()条件查询
user = session.query(User).filter(User.email == 'zhang@example.com').first()
模糊匹配
users = session.query(User).filter(User.name.like('%张%')).all()
更新和删除:
# 更新 user = session.query(User).get(1) user.name = '李四' session.commit()删除
session.delete(user) session.commit()
关键提醒:
基本上就这些。模型 → 连接 → 建表 → 操作,四步闭环。不复杂但容易忽略细节,比如没 commit、字段类型写错、SQLite 路径出问题。跑通一次,后面加字段、加表、加关联就顺了。
# mysql
# word
# python
# windows
# app
# session
# ai
# win
相关文章:
学校建站服务器如何选型才能满足性能需求?
C++如何编写函数模板?(泛型编程入门)
打鱼网站制作软件,波克捕鱼官方号怎么注册?
建站之星如何取消后台验证码生成?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何在西部数码注册域名并快速搭建网站?
宁波自助建站系统如何快速打造专业企业网站?
建站主机选择指南:服务器配置与SEO优化实战技巧
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
c# await 一个已经完成的Task会发生什么
简历在线制作网站免费版,如何创建个人简历?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
如何选择美橙互联多站合一建站方案?
建站10G流量真的够用吗?如何应对访问高峰?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
如何通过cPanel快速搭建网站?
长沙企业网站制作哪家好,长沙水业集团官方网站?
,网页ppt怎么弄成自己的ppt?
建站之星如何配置系统实现高效建站?
Python多线程使用规范_线程安全解析【教程】
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
微课制作网站有哪些,微课网怎么进?
简单实现Android验证码
如何在局域网内绑定自建网站域名?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
大同网页,大同瑞慈医院官网?
如何通过虚拟主机空间快速建站?
建站之星图片链接生成指南:自助建站与智能设计教程
如何在阿里云高效完成企业建站全流程?
如何快速搭建FTP站点实现文件共享?
如何高效生成建站之星成品网站源码?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
电商网站制作公司有哪些,1688网是什么意思?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
如何在腾讯云免费申请建站?
如何通过远程VPS快速搭建个人网站?
5种Android数据存储方式汇总
c# 在高并发下使用反射发射(Reflection.Emit)的性能
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何在橙子建站中快速调整背景颜色?
如何配置IIS站点权限与局域网访问?
制作企业网站建设方案,怎样建设一个公司网站?
青岛网站建设如何选择本地服务器?
建站主机如何选?高性价比方案全解析
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。