@dbelikov

Как правильно создать модель базы данных в Flask в комбинации с SQLAlchemy?

Добрый день,
имеется следующая модель базы данных
class Sensor(db.Model):
    __tablename__ = 'sensor'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True, unique=False)
    unit = relationship('Unit')


class Value(db.Model):
    __tablename__ = 'value'
    id = db.Column(db.Integer, primary_key=True)
    value = db.Column(db.Float, index=False, unique=False)
    timestamp = db.Column(db.DateTime)
    sensor_id = db.Column(db.Integer, db.ForeignKey('sensor.id'))
    sensor = db.relationship('Sensor', backref='value', lazy = 'select')

class Unit(db.Model):
    __tablename__ = 'unit'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), index=True, unique=False)
    description = db.Column(db.String(32), index=True, unique=False)


в коде делаю запрос по значениям для определённого датчика.

db_result = Value.query.filter(Value.sensor_id == sensor_id).limit(100).all()


как правильно указать db.relationship , чтоб можно было спросить вот так:

db_result.sensor.unit.description
?
  • Вопрос задан
  • 2647 просмотров
Решения вопроса 1
zs000
@zs000
Добавить внешний ключ в Sensor, который будет ссылаться на Unit:
class Sensor(db.Model):
    __tablename__ = 'sensor'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True, unique=False)
    unit_id = db.Column(db.Integer, db.ForeignKey('unit.id'))


class Unit(db.Model):
    __tablename__ = 'unit'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), index=True, unique=False)
    description = db.Column(db.String(32), index=True, unique=False)

    # Это для возможности получения всех ссылающихся на объект Unit объектов Sensor:
    sensors = relationship(Sensor, backref="unit_id")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы