Не удается распаковать GeoAlchemy GeometryColumn. Возможное решение: 2 модели sqlalchemy для одного стола - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть несколько моделей sqlalchemy, в которых есть GeometryColumn.
Для целей кэширования я использую cPickle.
Теперь, пока этот столбец пуст, все нормально.Однако, если у меня есть данные, которые я получаю:

TypeError: buffer() takes at least 1 argument (0 given)

при выполнении cPickle.loads(data)

Мне не нужен этот столбец в этом запросе, я буду рад исключить его.
Но, делая что-то вроде mymodel.geom = None перед травлением, выдает эту ошибку

Единственное решение, которое я имею в виду, - это определить другую модель sqlalchemy, у которой не будет этого столбца.Но если я установлю:

__tablename__ = 'same_table'

Я получу:

Table 'my_model' is already defined for this MetaData instance.  Specify 'extend_existing=True' to redefine options and columns on an existing Table object.

Есть ли какое-либо решение для любой из этих ошибок или какой-то обходной?сделать что-то вроде:

class MyModelNoGeom(MyModel):
   __tablename__=MyModel.__tablename__
   __table__.extend_existing=True

   geom=None

Также выдает ошибку:

NameError: name '__table__' is not defined

1 Ответ

0 голосов
/ 16 ноября 2011

Единственное решение, которое я нашел: Немного некрасиво, но работает.

temp_geom=MyModel.geom
MyModel.geom=None 
objects_MyModel.send_to_cache() 
MyMyodel.geom=temp_geom 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...