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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值