Я новичок в 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)
Моя цель - получить id
, name
в User
таблице и private_token
в Device
таблице дать 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()