flask-sqlalchemy多表查询的高效方法?


我的sqlite数据库有一张表关联另一张表,User和Userinfo、UseAttributes,
User里面字段的是id,username,
Userinfo里面字段的是id,userid,userAttributesId,value
UserAttributes里面的字段是id,attributeName,初始化为[(1, age), (2, address)......](共5条数据)

通过flask-sqlalchemy建立orm模型后,现在user表中有一千条数据,然后我从关联的Userinfo中获取user的数据,再从UserAttributes中获取数据的类型名。
我的操作过程是,先获取所有的user,在遍历user,通过user的id和通过attributeName查询到的UserAttributes的id从Userinfo获取到一条user的信息,然后在加给user对象


 users = User.query.all()
for user in users:
    use.age = Userinfo.query.filter_by(and_(userid = user.id, userAttributesId = UserAttributes.query.filter_by(attributeName = 'age').first().id)).first().value
    use.address = Userinfo.query.filter_by(and_(userid = user.id, userAttributesId = UserAttributes.query.filter_by(attributeName = 'address').first().id)).first().value
    .......
    ......

但是这样的执行效率很低,我也想不出什么高效的方法,请问有什么高效的查询方法吗?求大神不吝指教一下。

flask sqlalchemy python python-flask

潮爆老奶奶 9 years, 2 months ago

试试join

卡哇伊丶愛 answered 9 years, 2 months ago

Your Answer