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、多对多:
待续。。。。
关联表的查询方式: ##############看不懂拉到,反正也是我自己看