объекты sqlalchemy как ключи dict? - PullRequest
2 голосов
/ 20 июня 2011

Случай использования: у меня есть удаленная (медленная чтение) база данных, из которой я получаю некоторые данные через сопоставленные классы ORM.

Я бы хотел хранить временные данные без базы данных вместе с данными ORM, и я не хочу загрязнять пространство имен сопоставленного класса (которое используют другие люди) кучей временных атрибутов, чтобы я мог хранить некоторые объекты конкретные данные. Что я действительно хотел бы сделать, так это использовать их в качестве ключей к диктовке.

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

def __hash__( self ):
    return id( self ) if self.id is None else hash( self.id )

Поскольку мой вариант использования включает в себя первичный ключ auto_increment set db set, который не будет существовать до окончания сброса. Потенциально изменяющиеся хэши - это одно из главных факторов хэширования, и я бы хотел этого избежать.

Я мог бы попытаться исправить это, если бы вставил флеш в __hash__, но это кажется слишком большим побочным эффектом, чтобы быть хорошей идеей.

Итак, вопрос в следующем: есть ли хороший способ использовать экземпляры классов, отображаемых в ORM, в качестве ключей к диктовке, или есть другой / лучший способ связать временные данные с объектом без загрязнения его пространства имен?

1 Ответ

3 голосов
/ 20 июня 2011

Рассмотрите возможность хранения ваших локальных данных "не-db" в соответствующих отображенных экземплярах в качестве неотображенного атрибута например,

local_data = {'batsman': 'Sangakkara', 'bowler': 'swann'}
mapped_instance_from_query._local_data = local_data

SQLAlchemy будет просто игнорировать несопоставленные атрибуты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...