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类连接起来。
  • 相关阅读:
    JS给数字加千位分隔符
    前端防抖与节流实现与应用
    JS实现单向链表、双向链表、循环链表
    单点登录
    AMD、CMD规范
    JS实现全排列
    event loop、进程和线程、任务队列
    BOM属性对象方法
    JS的闭包、高阶函数、柯里化
    for...in、for...of、forEach()有什么区别
  • 原文地址:https://www.cnblogs.com/bracken/p/2910738.html
Copyright © 2011-2022 走看看