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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值