当前位置: 首页 > wzjs >正文

网站推荐赣州人才网下载

网站推荐,赣州人才网下载,wordpress 集中管理,网站是先解析后备案深入理解 Flask ORM:用 SQLAlchemy 优雅操作数据库一、前言:什么是 ORM?为什么要用它? 传统数据库操作要写 SQL,比如: SELECT * FROM users WHERE id 1;而使用 ORM 后,你可以这样写&#xff1a…

深入理解 Flask ORM:用 SQLAlchemy 优雅操作数据库


一、前言:什么是 ORM?为什么要用它?

传统数据库操作要写 SQL,比如:

SELECT * FROM users WHERE id = 1;

而使用 ORM 后,你可以这样写:

user = User.query.get(1)

ORM 的优势:

  • 可读性强:更符合 Python 编程风格
  • 更安全:自动防止 SQL 注入
  • 更易维护:模型即数据结构,不需要手写 SQL
  • 便于迁移和扩展:跨数据库兼容性强

二、Flask 中使用 SQLAlchemy 的 ORM

首先你需要安装扩展:

pip install flask flask_sqlalchemy

三、快速入门:定义模型

from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
db = SQLAlchemy(app)class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)email = db.Column(db.String(120), unique=True, nullable=False)def __repr__(self):return f"<User {self.username}>"

初始化数据库:

python
>>> from app import db
>>> db.create_all()

四、字段类型详解(Column Types)

类型含义
Integer整数
String(length)字符串
Text长文本
Boolean布尔值
Date / DateTime日期/日期时间
Float / Numeric浮点 / 精确小数

你还可以传入参数控制字段约束:

nullable=False     # 非空
unique=True        # 唯一约束
default='value'    # 默认值

五、常见 ORM 查询操作(CRUD)

1. 增(Create)

user = User(username='alice', email='alice@example.com')
db.session.add(user)
db.session.commit()

2. 查(Read)

# 查询所有用户
User.query.all()# 查询第一个
User.query.first()# 条件查询
User.query.filter_by(username='alice').first()# 主键查询
User.query.get(1)

3. 改(Update)

user = User.query.get(1)
user.email = 'new@example.com'
db.session.commit()

4. 删(Delete)

db.session.delete(user)
db.session.commit()

六、模型之间的关系建模(重点)

1. 一对多关系(User -> Post)

class Post(db.Model):id = db.Column(db.Integer, primary_key=True)title = db.Column(db.String(100))content = db.Column(db.Text)user_id = db.Column(db.Integer, db.ForeignKey('user.id'))user = db.relationship('User', backref='posts')

使用方式:

user = User.query.first()
for post in user.posts:print(post.title)

2. 多对多关系

association = db.Table('association',db.Column('user_id', db.Integer, db.ForeignKey('user.id')),db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'))
)class Tag(db.Model):id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(30))users = db.relationship('User', secondary=association, backref='tags')

七、模型中的方法与属性

你可以在模型中添加自定义方法:

class User(db.Model):...def is_email_valid(self):return '@' in self.email

八、数据库迁移:保持模型与数据库结构一致

使用 Flask-Migrate 可以自动生成迁移脚本。

pip install flask-migrate

在 app.py 中初始化:

from flask_migrate import Migratemigrate = Migrate(app, db)

命令行使用:

flask db init
flask db migrate -m "Initial"
flask db upgrade

九、项目结构建议(大中型项目)

推荐将模型拆分至 models/ 文件夹中,并使用工厂函数初始化 Flask 应用。

结构如下:

project/
├── app/
│   ├── __init__.py   ← 创建 Flask 实例
│   ├── models/
│   │   ├── __init__.py
│   │   ├── user.py
│   │   └── post.py

十、最佳实践总结

  • 使用 Flask-SQLAlchemy 管理模型与数据库
  • db.relationship() 管理表之间的联系
  • 用 Flask-Migrate 管理数据库结构变更
  • 模型即数据结构,推荐优先设计模型
  • 注意避免循环引用(尤其在关系定义中)

十一、结语与扩展学习方向

通过本篇内容,你应该已经掌握:

  • ORM 基础与模型定义
  • 常用字段与关系建模
  • 数据库查询与事务操作
  • 使用 Flask-Migrate 实现数据库迁移
http://www.dtcms.com/wzjs/801807.html

相关文章:

  • 合肥建设公司网站wordpress主题文件夹在哪
  • 子网站建设工作创意网站设计模板
  • 网站被做301跳转了怎么办查询关键词密度网站的网址有哪些
  • 专门做算法项目的网站开源多用户商城哪个好
  • 友情链接交换网站保障网装修网官网
  • 天气预报网站怎么做wordpress支持代码
  • 网站建设_微信开发wordpress自定义表单
  • 常州市建设工程管理中心网站wordpress 调用当前分类文章
  • 鹿寨县住房和城乡建设局网站网站建设代码上传
  • 网站备案 公司名称关联性wordpress主题应用
  • 怎做网站手机湛江购房网
  • 最新网站建设语言四川省城乡住房建设部网站
  • 龙岗网站建设-信科网络营销型网站建设公司哪家好哪个好
  • 网站建设及模板使用教程嘉定做网站的
  • 德宏企业网站建设合川房产网
  • 北京外贸营销网站建设费用前端用什么框架做网站
  • 做网站都需要什么深圳市做网站的
  • 新乡网站建设制作市场监督管理局是什么单位
  • 做宠物食品的网站烟台网站制作策划
  • 颐高养生园网站建设衡阳seo优化
  • 女人网上量体做衣网站网站制作教程一般地建网络
  • 做搜狗网站快速排名软尚海整装和沪佳哪个好
  • 厦门市市场开发建设服务中心网站如何做自己网站
  • 免费1级做爰片动漫在线观看网站企业网站每年的费用
  • 如何介绍自己做的网站书签制作视频
  • 营销咨询公司收费标准seo网络优化师招聘
  • 百度广州分公司地址门户网站seo前期
  • 商务网站的建设与维护学设计哪个职业学校比较好
  • 建站教程wp网站建设开题报告论述
  • 织梦网站源文件没有style文件夹怎么修改网站背景有哪些网站手游做的好的