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

深圳网站建设评价/东方网络律师团队

深圳网站建设评价,东方网络律师团队,百度app,更改网站名称ORM模型 在Flask中,ORM(Object-Relational Mapping,对象关系映射)模型是指使用面向对象的方式来操作数据库的编程技术。它允许开发者使用Python类和对象来操作数据库,而不需要直接编写SQL语句。 核心概念 1. ORM模型…

ORM模型

在Flask中,ORM(Object-Relational Mapping,对象关系映射)模型是指使用面向对象的方式来操作数据库的编程技术。它允许开发者使用Python类和对象来操作数据库,而不需要直接编写SQL语句。

核心概念

1. ORM模型定义

在Flask中,ORM模型通常是通过SQLAlchemy(最流行的Python ORM工具)或类似的库来定义的。一个ORM模型对应数据库中的一个表。

from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy()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}>'

2. 主要特点

  • 表映射为类:每个数据库表对应一个Python类

  • 列映射为属性:表中的列对应类的属性

  • 行映射为对象:表中的每一行数据对应类的一个实例

常用字段类型

ORM类型Python类型数据库类型
db.IntegerintINTEGER
db.String(size)strVARCHAR(size)
db.TextstrTEXT
db.FloatfloatFLOAT
db.BooleanboolBOOLEAN
db.DateTimedatetime.datetimeDATETIME
db.Datedatetime.dateDATE
db.Timedatetime.timeTIME
db.LargeBinarybytesBLOB

模型关系

1. 一对多关系

class User(db.Model):id = db.Column(db.Integer, primary_key=True)posts = db.relationship('Post', backref='author', lazy=True)class Post(db.Model):id = db.Column(db.Integer, primary_key=True)user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

2. 多对多关系

tags = db.Table('tags',db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True),db.Column('post_id', db.Integer, db.ForeignKey('post.id'), primary_key=True)
)class Post(db.Model):id = db.Column(db.Integer, primary_key=True)tags = db.relationship('Tag', secondary=tags, lazy='subquery',backref=db.backref('posts', lazy=True))class Tag(db.Model):id = db.Column(db.Integer, primary_key=True)

基本CRUD操作

1. 创建(Create)

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

2. 读取(Read)

# 获取所有用户
users = User.query.all()# 获取单个用户
user = User.query.get(1)# 条件查询
user = User.query.filter_by(username='john').first()

3. 更新(Update)

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

4. 删除(Delete)

user = User.query.get(1)
db.session.delete(user)
db.session.commit()

在Flask中使用ORM模型

  1. 首先需要配置数据库URI:

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
  1. 创建数据库表:

with app.app_context():db.create_all()

优势

  1. 提高开发效率:不用写原生SQL语句

  2. 代码更易维护:数据库操作以面向对象方式进行

  3. 数据库无关性:可以轻松切换不同类型的数据库

  4. 安全性:自动处理SQL注入等安全问题

注意事项

  1. 记得在修改模型后执行数据库迁移(如使用Alembic)

  2. 批量操作时注意性能(N+1查询问题)

  3. 复杂的查询可能还是需要直接使用SQL

Flask中的ORM模型大大简化了数据库操作,使得开发者可以更专注于业务逻辑的实现。

创建外键



查询外键



 

Flask连接MySQL数据库+ORM增删改查

在Flask中,很少会使用pymysql直接写原生SQL语句去操作数据库,更多的是通过SQLAichemy提供的ORM技术,类似于操作普通Python对象一样实现数据库的增删改查操作,而Flask-SQLAlchemy是需要单独安装的,因为Flask-SQLAlchemy依赖SQLAlchemy,所以只要安装了Flask-SQLAlchemy,SQLAlchemy会自动安装。

pip install flask-sqlalchemy
# 登录数据库
mysql -u root -p
# 创建数据库(支持中文)
CREATE DATABASE database_learn DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import textapp=Flask(__name__)# 设置连接数据库的信息
HOSTNAME='127.0.0.1'
PORT=3306
USERNAME='root'
PASSWORD='123456'
DATABASE='database_learn'# 设置连接数据库的URL
app.config['SQLALCHEMY_DATABASE_URI']=f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4'# 在app.config中设置好连接数据库的信息,然后使用SQLLichemy(app)创建一个db对象
# SQLAlchemy会自动读取app.config中连接数据库的信息db=SQLAlchemy(app)with app.app_context():with db.engine.connect() as conn:result=conn.execute(text("select 1"))print(result.fetchone())@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run(debug=True)


一个ORM模型与一个数据库中的一张表对应


创建数据库表


其实就是创建一个ORM模型,而且user表有属性是username和password




添加用户


查询用户



我刷新了两次add页面,所以有两个添加张三

更新用户



删除

Flask-migrate使用方法指南

 # flask-migrate迁移ORM模型
在终端中

pip install flask-migrate
flask db init
flask db migrate
flask db upgrade


自动生成。第一次创建的时候需要Init,后面再更新的话只需要后两条命令

这样就不需要再重新创建表设计表,能够直接更新表的属性

Alembic 使用方法指南

Alembic 是一个轻量级的数据库迁移工具,专门为 SQLAlchemy 设计。以下是 Alembic 的基本使用方法:

1. 安装

pip install alembic

2. 初始化

在项目目录中初始化 Alembic:

alembic init alembic

这会创建一个 alembic 目录和 alembic.ini 配置文件。

3. 配置

编辑 alembic.ini 文件,设置数据库连接:

sqlalchemy.url = driver://user:pass@localhost/dbname

或者在 alembic/env.py 中动态配置:

config.set_main_option('sqlalchemy.url', 'your-database-url')

 

4. 创建迁移脚本

自动生成迁移脚本(基于模型变更):

alembic revision --autogenerate -m "描述信息"

手动创建空迁移脚本:

alembic revision -m "描述信息"

5. 编辑迁移脚本

生成的迁移脚本位于 alembic/versions/ 目录下,包含 upgrade() 和 downgrade() 函数。

6. 执行迁移

升级到最新版本:

alembic upgrade head

升级到特定版本:

alembic upgrade <版本号>

降级到特定版本:

alembic downgrade <版本号>

7. 其他常用命令

  • 查看当前版本:

alembic current
  • 查看历史记录:

alembic history
  • 生成 SQL 而不执行(用于检查):

alembic upgrade head --sql

8. 与 Flask 集成

如果使用 Flask-SQLAlchemy,可以在 env.py 中:

from myapp import db
target_metadata = db.metadata

9. 最佳实践

  1. 每次模型变更后生成新的迁移脚本

  2. 为每个迁移编写清晰的描述信息

  3. 在团队中共享迁移脚本

  4. 在生产环境部署前测试迁移

注意事项

  • 确保模型与数据库同步

  • 自动生成迁移后检查生成的脚本是否正确

  • 对于复杂变更,可能需要手动编辑迁移脚本

希望这个指南能帮助你开始使用 Alembic 进行数据库迁移管理!

http://www.whsansanxincailiao.cn/news/31976940.html

相关文章:

  • 定州市建设局网站/广告推广平台赚取佣金
  • 威海制作网站/整合营销传播策划方案
  • 北京做网站网络公司/hao123上网从这里开始官方
  • 喜欢网站建设学什么专业/合肥网站建设程序
  • 海外网站优化/百度发布信息的免费平台
  • 政府采购网供应商注册/北京网站优化步
  • 广告文案优秀网站/公司软文推广
  • 大学两学一做专题网站/网络营销策划案例
  • 2023年疫情第三波爆发时间/seo外贸公司推广
  • 国外html5网站欣赏/谷歌paypal官网注册入口
  • 互联网怎么做网站/排名怎么优化快
  • 做网店装修的网站有哪些/网站制作流程图
  • 做网站规避什么/搜索引擎排名
  • 新冠肺炎疫情最新/佛山做优化的网络公司
  • 政府建设门户网站的意义/大数据智能营销
  • 赣州网站建设较好的公司/各类资源关键词
  • 做校招的网站有哪些/广州seo代理
  • js做示爱网站例子/长沙seo推广公司
  • 在线做免费网站有哪些/网站制作公司排名
  • 网站建设全程揭秘 课件下载/灰色项目推广渠道
  • 同江佳木斯网站建设/seo博客教程
  • php企业网站开发实训报告/seo免费教程
  • 两学一做专题网站介绍/湖南长沙seo
  • 配音阁在线制作网站/百度账号注册
  • 个人网站建设策划书/实体店引流推广方法
  • 高职思政主题网站建设作用/电商推广方案
  • 佛山网站建设灵格/自己可以创建网站吗
  • 做简历的网站有哪些/就在刚刚武汉宣布最新消息
  • 有pc网站 移动网站怎么做/市场营销推广活动方案
  • 国外二手表网站/广州谷歌推广