Flask sqlalchemy创建表的时候 外键的 lazy参数(1ni)

    lazy参数会告诉SQLAlchemy 如何去加载我们指定的关联对象。如果设置为 子查询方式(subquery),则会在加载完Post对象的时候,就立即加载与其关联的对象。这样会让总查询数量减少,但如果返回的条目数量很多,就会比较慢。

    我们这里设置动态方式(dynamic),这样关联对象会在被使用的时候再进行加载,并且在返回前进行过滤。如果返回的对象数很多,或者未来会变得很多,那最好采用这种方式

class User(db.Model):
    """
    python manage.py shell
    db.create_all()
    创建
    """
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(100))
    password = db.Column(db.String(200))
    posts = db.relationship('Post', backref='user', lazy='dynamic')
    """
    lazy参数会告诉SQLAlchemy 如何去加载我们指定的关联对象。如果设置为子查询方式(subquery),
    则会在加载完Post对象的时候,就立即加载与其关联的对象。这样会让总查询数量减少,但如果返回
    的条目数量很多,就会比较慢。
    我们这里设置动态方式(dynamic),这样关联对象会在被使用的时候再进行加载,并且在返回前进行过滤。
    如果返回的对象数很多,或者未来会变得很多,那最好采用这种方式
    """

    def __init__(self, username):
        self.username = username

    def __repr__(self):
        return "<User '{}'>".format(self.username)


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255))
    text = db.Column(db.Text())
    publish_date = db.Column(db.DateTime)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __init__(self, title):
        self.title = title

    def __repr__(self):
        return "<Post '{}'>".format(self.title)

猜你喜欢

转载自blog.csdn.net/qq_40952927/article/details/80886649