Pyramidのわだい。
SQLAlchemyがいじわるな子になっている件。
掲題のエラーが出るんですよ。
全体感としては、
models.mymodel.pyの中で
Base = declarative_base() MyModel(Base)
こう。MyModelクラスを切っておき、他のファイルの各モデルクラスがMyModelを継承するというかんじ。
models.employee.pyには
class Employee(MyModel):
こういうのがいますという形。
なんてことないというか、以前これで普通に使えていたはずなんだけどナーというところですが
むむむ。なんだよ。リレーションなんて張らないよ。継承元でしかないんだけどどういうことなの。
手当たり次第にぐぐります。
そして発見
the naming conventions recipe is another way to go too.
新しいBase(たぶんdeclarative_baseのことなんだろう)を使うときは、__abstract__を使ってみてとある。
なんすかそれは。
入れてみますと、これが当たりでした。
こうするとよいということですね。
class MyModel(Base): __tablename__ = 'models' __abstract__=True id = Column(Integer, primary_key=True) status = Column(Integer, default=1) created = Column(DateTime, default=datetime.datetime.now) updated = Column(DateTime, default=datetime.datetime.now) def __init__(self, name, value): self.name = name
あ、えーとPEP8違反(=の両脇にスペースたくさん入れるのNG)の記述になってます。すいません。
PyCharmもあまりにこれガミガミ言うんで警告出さないようにしちゃった。すいません。
=の位置が揃ってないと気持ち悪いんだよ。