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
    .......
    ......

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

自己试了一下,还是不要把查询语句放到循环中去,因为数据很多时,循环的次数越多,查询语句的执行次数越多,时间就越久了。

阅读 9.6k
2 个回答

这需求还是raw sql吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题