无法解开GeoAlchemy GeometryColumn。可能的解决方案:2个sqlalchemy型号为同一个表

时间:2011-11-10 22:15:30

标签: python sqlalchemy

我有一些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 :(得分:0)

我发现的单一解决方案: 有点难看,但有效。

temp_geom=MyModel.geom
MyModel.geom=None 
objects_MyModel.send_to_cache() 
MyMyodel.geom=temp_geom