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)