zoukankan      html  css  js  c++  java
  • flasksqlalchemy 关系(一对多)

      假设我们想要创建一个博客系统,这个系统中最关键的部分就是博客内容,而这个内容则是归属于某个用户的博客。从数据库角度来看,这就是一个一对多的关系。一个用户,可以对应多个博客内容。

      一对多的关系表创建如下:

    class User(db.Model):
        id = db.Column( db.Integer, primary_key=True)
        name = db.Column( db.String( 50 ), unique = True )
        email = db.Column( db.String( 120 ), unique = True )
        password = db.Column( db.String( 120 ) )
        blogs = db.relationship('Blog', backref = 'users', lazy = 'dynamic')
    
        def __init__( self, name, password, email ):
            self.name = name
            self.email = email
            self.password = password
    
        __tablename__ = 'users'
    
        def __repr( self ):
            return '<User %r>' % (self.name)
    
    class Blog(db.Model):
        id = db.Column( db.Integer, primary_key=True)
        title = db.Column( db.String( 100 ) )
        text = db.Column( db.String( 1024 ) )
    
        author = db.relationship("User", backref=db.backref('blog', order_by=id))
        author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    
        def __init__( self, title, text, author ):
            self.title = title
            self.text = text
            #author = db.relation(User, innerjoin=True, lazy="joined")
            self.author = author
    
        __tablename__ = 'blogs'
    
        def __repr__( self ):
            return '<Blog %r author_id %d>' % (self.title, self.author_id)
    ForeignKey的作用是将user的id和blog关联起来。此时的ForeignKey需要将user的主键和author_id关联起来。
    relationship的作用是将User类和Blog类连接起来。
  • 相关阅读:
    持续交付11-构建和部署的脚本化
    腾讯云即时通讯IM 公共整合
    腾讯云应用生成 UserSig
    「USACO 2020 US Open Platinum」Exercise
    async要点
    jQuery实现textarea高度根据内容自适应
    背景图片设置透明度而不改变内容
    input type=file实现图片上传,预览以及图片删除
    vant 字体图标不显示问题
    vue项目使用mock.js
  • 原文地址:https://www.cnblogs.com/bracken/p/2910738.html
Copyright © 2011-2022 走看看