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类连接起来。
原文地址:https://www.cnblogs.com/bracken/p/2910738.html