sqlalchemy ————关联表

1、创建模型的时候做外键关联

class UI_ID(db.Model):
    __tablename__ = ui_id
    id = db.Column(INTEGER(11), primary_key=True, comment=id)
    id_path = db.Column(INTEGER(11), comment=路径地址)
    id_name = db.Column(db.String(255), comment=id名称,可以不填写,由系统生成)
    id_model = db.Column(INTEGER(11), ForeignKey(
        "project_modules.id"), comment=所属模块)
    mk_user = db.Column(INTEGER(11), ForeignKey(
        "user.userid"), comment=创建人)
    mk_time = db.Column(DateTime,  comment=创建时间)
    up_time = db.Column(DateTime,  comment=更新时间)
    id_pro = db.Column(db.String(255),  comment=ID 描述)

    module = db.relationship(
        Project_modules, backref=moduleid_fo_pro_module)
    user1 = db.relationship(
        User, primaryjoin=UI_ID.mk_user == User.userid)

  主要使用到两个函数  ForeignKey、relationship 。ForeignKey是注明要关联的表以及关联的列,relationship是与关联表做一个映射关系

 

 

2、自关联表结构 

class Project_modules(db.Model):
    __tablename__ = project_modules
    id = db.Column(INTEGER(11), primary_key=True, comment=模块ID)
    p_id = db.Column(INTEGER(11), comment=项目ID)
    name = db.Column(db.String(255), comment=模块名称)
    father_id = db.Column(INTEGER(11), ForeignKey(
        project_modules.id), comment=父级ID)
    mk_user = db.Column(db.String(255), comment=创建人)
    mk_time = db.Column(DateTime,  comment=创建时间)
    up_time = db.Column(DateTime,  comment=更新时间)

    module = db.relationship(
        Project_modules, remote_side=[id], backref=module_fo_module)

  创建方式与外键关联区别不大、只是在relationship函数内增加了一个remote_side=[id]的字段,意思是标明当前表的哪一列

 

3、多对多:

 

待续。。。。

 

关联表的查询方式: ##############看不懂拉到,反正也是我自己看

sqlalchemy ————关联表

 

sqlalchemy ————关联表

上一篇:[es同步数据库]同步数据库数据到ES中代码


下一篇:记一次 用户资料修改表单 数据库改变 前端值不改变的问题