Flask模型类基本属性

基本属性

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

db = SQLAlchemy()


# 下面可以写模型类
# 继承模型类 db.model
# 自动生成表名 user_info
class UserModel(db.Model):
    """
    flask需要自己写id字段,主键自增唯一
    db.Column()代表一行
    db.Integer 整数
    db.String(32) 字符串
    db.DECIMAL(10, 2) 小数
    comment=""注释
    nullable=False 不允许为空
    unique=True 是否唯一
    autoincrement=True 自增
    onupdate=datetime.now() 自动更新时间
    """
    id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment="用户id")
    username = db.Column(db.String(32), nullable=False, unique=True, comment="用户名")
    intro = db.Column(db.Text, comment="用户简介")
    age = db.Column(db.Integer, nullable=False, default=18, comment="年龄")
    birthday = db.Column(db.DateTime, default=datetime.now(), comment="生日")
    login_time = db.Column(db.DateTime, default=datetime.now(), comment="登陆时间", onupdate=datetime.now())
    sex = db.Column(db.Boolean, default=False, comment="false男;true女")
    money = db.Column(db.DECIMAL(10, 2), default=0, comment="资产")

一对多

# 一对多
# 从表 学生表
class StuModel(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), comment="学生名字")
    # 建立外键
    sub_id = db.Column(db.Integer, db.ForeignKey("sub_model.id"))


# 主表 专业表
class SubModel(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), comment="专业名字")
    # 设置从表关系  db.relationship("从表名",backref="")
    # db.relationship 说明关系  backref="" 以什么样的名字让从表查询主表
    stu = db.relationship("StuModel", backref="sub")

多对多---写法一

# 多对多
# 创建中间表
article_tag = db.Table(
    "article_tag",
    db.Column("article_id", db.Integer, db.ForeignKey("article_model.id"), primary_key=True),  # 一张表的外键
    db.Column("tag_id", db.Integer, db.ForeignKey("tag_model.id"), primary_key=True)  # 另一张表的外键
)


class ArticleModel(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), comment="文章名")
    tag = db.relationship("TagModel", secondary=article_tag, backref=db.backref("article"))  # 任意一张表声明关系


class TagModel(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), comment="标签名")

多对多---写法二

class UserModel(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(32), comment="用户名")
    password = db.Column(db.String(16), comment="密码,加密存储")
    order_id = db.relationship("OrderModel", backref="user")


class TonyModel(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(32), comment="托尼")
    price = db.Column(db.Integer, comment="价格")
    service_id = db.Column(db.Integer, default=0, comment="服务对象id")
    order_id = db.relationship("OrderModel", backref="tony")


class OrderModel(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    start_time = db.Column(db.DateTime, comment="开始服务时间", default=datetime.now)
    end_time = db.Column(db.DateTime, comment="结束服务时间")
    price = db.Column(db.DECIMAL(10, 2), comment="价格")
    tony_id = db.Column(db.Integer, db.ForeignKey("tony_model.id"), comment="所属托尼")
    user_id = db.Column(db.Integer, db.ForeignKey("user_model.id"), comment="所属用户")

自关联

class OfficeModel(db.Model):
    __tablename__ = "office_models"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment="科室分类ID")
    office = db.Column(db.String(16), comment="科室标题")
    parent = db.relationship("OfficeModel", remote_side=[id])
    parent_id = db.Column(db.Integer, db.ForeignKey("office_models.id"), comment="科室分类详情")
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask框架中,一般使用SQLAlchemy来进行数据库操作。SQLAlchemy是一个Python的ORM(对象关系映射)工具,它可以将Python对象映射到关系型数据库中的表结构。 以下是使用Flask+SQLAlchemy进行数据库操作的一些基本步骤: 1. 安装Flask和SQLAlchemy库:可以使用pip安装,如下所示: ```python pip install flask pip install sqlalchemy ``` 2. 配置数据库连接:在Flask应用程序中,需要定义数据库连接的参数,例如数据库型、主机地址、端口号、用户名、密码、数据库名称等。可以通过配置文件、环境变量等方式来设置这些参数。 3. 定义模型:在SQLAlchemy中,每个数据表对应一个模型,开发者需要定义自己的模型,并通过继承db.Model来实现。模型中需要定义表结构、字段型、字段属性、关联关系等信息。 4. 创建数据表:在应用程序启动时,可以通过调用db.create_all()方法来创建模型对应的数据表。 5. 实现增删改查操作:通过SQLAlchemy提供的API,可以实现常见的CRUD操作,例如添加、查询、更新、删除等。 以下是一个简单的示例代码,展示了如何在Flask框架中使用SQLAlchemy来实现数据库操作: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), unique=True) @app.route('/') def index(): # 添加数据 user = User(name='Alice') db.session.add(user) db.session.commit() # 查询数据 users = User.query.all() for user in users: print(user.name) # 更新数据 user = User.query.filter_by(name='Alice').first() user.name = 'Bob' db.session.commit() # 删除数据 user = User.query.filter_by(name='Bob').first() db.session.delete(user) db.session.commit() return 'Hello, world!' if __name__ == '__main__': app.run(debug=True) ``` 这个示例代码中,定义了一个名为User的模型,包含了id和name两个字段。在路由函数中,首先添加了一条数据,然后查询所有数据、更新一条数据、删除一条数据,最后返回一个简单的字符串。这些操作都是通过SQLAlchemy提供的API来实现的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值