码迷,mamicode.com
首页 > 数据库 > 详细

flask_sqlalchemy join的正确使用方法

时间:2018-05-26 16:40:45      阅读:5052      评论:0      收藏:0      [点我收藏+]

标签:分享   方法   password   错误   代码   ble   14.   集成   信息   

flask_sqlalchemy包裹了sqlalchemy一些操作,其能够更好的与flask协作,flask_sqlalchemy中的大部分api来自于sqlalchemy.orm.query.Query,直接使用集成db.Model类的query属性就可以得到Query类,例如一下实例

class Users(db.Model):

    id = db.Column(db.Integer, primary_key=True)

    username = db.Column(db.String(20), unique=True, nullable=False)

    password = db.Column(db.String(40), nullable=False)

 

class File(db.Model):

    id = db.Column(db.Integer, primary_key=True)

    userid = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)

    filename = db.Column(db.String(40), nullable=False)

    filesize = db.Column(db.Integer)

直接使用File.query就会返回db.session.query(SomeMappedClass),使用的api参照Query的api。

在使用Qurey的join的时候采用代码,File.query.join(Users.id),这是官方给出的文档中的使用方式

 技术分享图片

但我在使用后出现错误

 技术分享图片

后来才发现,文档中说明了使用条件在User与Address存在mapping的,而我这里并没有,使用的db.Model类与官方的类也不相同,因此在文档后续中查找到了下面一条信息

 技术分享图片

这个是将传入的参数换为入口或者是表,这样才了解到之前的用法是有问题,按照这里的说法应该是可以传入一个表或者是另外的query,因此参数应该是这样的

File.query.join(Users.query)

File.query.join(Users)

File.query.join(Users.__table__)

通过源代码可以看到,flask_sqlalchemy会将定义的Column创建为一张sqlalchemy表并存在__table__中。而在这里Users.query代表了一个query入口,Model也应该实现了类似query相应的入口,因此可以简写。

 

flask_sqlalchemy join的正确使用方法

标签:分享   方法   password   错误   代码   ble   14.   集成   信息   

原文地址:https://www.cnblogs.com/lee88688/p/9093046.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!