【发布时间】:2019-01-30 03:56:01
【问题描述】:
我是 Python 和 Flask-SqlAlchemy 的初学者,我只是想不通为什么 query.join() 总是只返回 none,即使我的表有确切的数据。
这是我的桌子:
class User(db.Model):
__tablename__ = "users_info"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.Integer, unique=True, nullable=True)
email = db.Column(db.String)
user_device = db.relationship('Device', backref='user')
class Device(db.Model):
__tablename__ = "user_device"
device_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
id = db.Column(db.Integer, db.ForeignKey(User.id))
private_token = db.Column(db.String, nullable=True)
我的目标是在 User 表中获取 id,name 和在 Device 表中获取 private_token 在单个查询中使 User.email 等于某个值。
所以这是我尝试过的:
User.query.join(Device, User.id == Device.id)\
.add_columns(User.id, User.name, Device.private_token)\
.filter_by(User.email == data['email'])
我在上述查询中使用filter() 或filter_by()。但最后它仍然返回none。
所以我的问题是,如何正确加入表格?实现上述目标的方法是什么?
编辑:
我尝试在上面的查询中添加.add()和.first(),在控制台打印后显示的结果只是[ ]。
User.query.join(Device, User.id == Device.id)\
.add_columns(User.id, User.name, Device.private_token)\
.filter_by(User.email == data['email']).all()
【问题讨论】:
标签: python sqlalchemy