SQLalchemy: отображение столбцов в разные свойства - PullRequest
2 голосов
/ 15 февраля 2011

Я пытаюсь сохранить результаты измерений (время и значения) с помощью sqlalchemy. Вот соответствующие определения таблиц. Если есть более разумное определение таблицы, я бы хотел его увидеть.

from sqlalchemy import create_engine, schema, orm

engine = create_engine('sqlite:///:memory:', echo=True)
metadata = schema.MetaData(bind=engine)

container_table = schema.Table('containers', metadata,
        schema.Column('id', schema.types.Integer, primary_key=True))

measurement_table = schema.Table('measurements', metadata,
        schema.Column('id', schema.types.Integer, primary_key=True),
        schema.Column('container_id', schema.types.Integer,
                      schema.ForeignKey('containers.id')),
        schema.Column('time',  schema.types.Float),
        schema.Column('value', schema.types.Float))

metadata.create_all()

Время будет уникальным для каждого контейнера, а указанные ниже свойства должны быть упорядочены по времени.

Я бы хотел прочитать и назначить следующие свойства:

c = Container()

times  = range(10)
values = [t**2 for t in times]

c.times  = times
c.values = values

Но я не знаю, как сделать отображение. Я предполагаю, что если это возможно, это будет выглядеть примерно так:

class Container(object):
    times  = some_sort_of_proxy()
    values = some_sort_of_proxy()

orm.mapper(Container, container_table, properties={
        # Magic
        })

Как мне это сделать? Это разумное отображение, или мне нужно иметь другую базовую структуру таблицы?

1 Ответ

1 голос
/ 02 апреля 2011
class EmailAddress(object):

    @property
    def email(self):
        return self._email

    @email.setter
    def email(self, email):
        self._email = email

mapper(EmailAddress, addresses_table, properties={
    '_email': addresses_table.c.email
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...