Я хочу передать экземпляр сопоставленного класса методу, не поддерживающему SQLAlchemy (в другом процессе), и мне нужны только значения моих атрибутов. Проблема в том, что UnboundExecutionError
возникает каждый раз, когда метод хочет прочитать значение атрибута. Я понимаю, почему это происходит, но я хотел бы найти решение этой проблемы.
Мне нужны только значения моих определенных атрибутов ( id , name и dirty в примере) и не требуются накладные расходы SQLAlchemy в месте назначения метод.
Пример класса:
Base = declarative_base()
class Record(Base):
__tablename__ = 'records'
_id = Column('id', Integer, primary_key=True)
_name = Column('name', String(50))
_dirty = Column('dirty', Boolean, index=True)
@synonym_for('_id')
@property
def id(self):
return self._id
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
self._dirty = True
name = synonym('_name', descriptor=name)
@synonym_for('_dirty')
@property
def dirty(self):
return self._dirty
Пример вызова:
...
def do_it(self):
records = self.query.filter(Record.dirty == True)
for record in records:
pass_to_other_process(record)
Я пытался использовать session.expunge()
и copy.copy()
, но безуспешно.