第10天:数据库模型(基础)

第10天:数据库模型(基础)

数据库模型简介

在Web应用中,数据库模型是数据结构的抽象表示,它们定义了如何存储、检索和操作数据。在Flask中,通常使用SQLAlchemy来定义这些模型。

定义模型
  1. 创建模型类
    • 模型通常作为类定义,继承自db.Model,每个类对应数据库中的一个表。

示例模型类 (models.py):

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

db = SQLAlchemy()

class User(db.Model):
    __tablename__ = 'users'
    
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    registered_on = db.Column(db.DateTime, default=datetime.utcnow)

    def __repr__(self):
        return '<User %r>' % self.username
  1. 字段类型
    • 定义字段及其类型,常见的字段类型包括db.String, db.Integer, db.Float, db.Boolean, db.Text, db.DateTime等。
模型关系
  1. 定义关系
    • 可以定义模型之间的关系,如一对一、一对多和多对多。

示例定义关系

class Post(db.Model):
    __tablename__ = 'posts'
    
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(140), nullable=False)
    body = db.Column(db.Text, nullable=False)
    author_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    author = db.relationship('User', backref=db.backref('posts', lazy=True))
数据库迁移
  1. 创建迁移脚本
    • 使用Flask-Migrate来跟踪模型定义的变更,并生成迁移脚本。

示例创建迁移脚本

flask db migrate -m "Initial migration."
  1. 升级数据库
    • 应用迁移脚本,更新数据库结构。

示例升级数据库

flask db upgrade
操作数据库
  1. 添加数据
    • 创建模型实例并将其添加到数据库会话。

示例添加数据

new_user = User(username='newuser', email='newuser@example.com')
db.session.add(new_user)
db.session.commit()
  1. 查询数据
    • 使用查询构造器查询数据库。

示例查询数据

user = User.query.filter_by(username='newuser').first()
if user:
    print(user.email)
  1. 更新和删除数据
    • 更新或删除数据库中的记录。

示例更新数据

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

示例删除数据

user = User.query.get(1)
if user:
    db.session.delete(user)
    db.session.commit()
结语

今天,我们学习了如何在Flask中定义数据库模型,以及如何使用SQLAlchemy和Flask-Migrate来管理数据库的变更。掌握数据库模型的创建和操作是构建数据驱动Web应用的重要基础。


记得在你的Flask应用中实践定义模型和执行数据库操作。这是一个很好的机会,可以帮助你加深对数据库模型和ORM的理解。

相关推荐

  1. 10数据库模型基础

    2024-06-12 21:06:03       8 阅读
  2. 数据分析】numpy基础

    2024-06-12 21:06:03       32 阅读
  3. 数据分析】numpy基础

    2024-06-12 21:06:03       32 阅读
  4. 基础10 入门 Web3之2

    2024-06-12 21:06:03       14 阅读
  5. 学习数据接构和算法的10

    2024-06-12 21:06:03       24 阅读
  6. 18 map

    2024-06-12 21:06:03       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 21:06:03       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 21:06:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 21:06:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 21:06:03       18 阅读

热门阅读

  1. 短剧推荐2024-03

    2024-06-12 21:06:03       7 阅读
  2. 百度地图瓦片下载地址

    2024-06-12 21:06:03       7 阅读
  3. GPT-4o的综合评估与前景展望

    2024-06-12 21:06:03       6 阅读
  4. 全面解析C++对象的向上和向下类型转换”

    2024-06-12 21:06:03       7 阅读
  5. Web前端开发海报:揭示前端设计的魅力与技巧

    2024-06-12 21:06:03       10 阅读
  6. Anconda环境迁移

    2024-06-12 21:06:03       7 阅读
  7. 单调队列 加 二分

    2024-06-12 21:06:03       6 阅读