1
我想分享在我的所有車型的簡單功能(時間戳),並正在與「增強基地」的方式去作爲SQLA文檔描述共享的事件處理程序。到目前爲止,我這樣做:所有車型
import sqlalchemy as sa
from datetime import datetime as dt
class EntityBase(object):
@declared_attr
def __tablename__(cls):
return cls.__name__.lower()
id = sa.Column(sa.Integer, primary_key=True)
last_update = sa.Column(sa.DateTime, default=dt.utcnow())
def update_entity(mapper, connection, target):
target.last_update = dt.utcnow()
Entity = declarative_base(cls=EntityBase)
sa.event.listen(Entity, 'before_insert', update_entity)
sa.event.listen(Entity, 'before_update', update_entity)
我的所有型號均來自Entity
類派生。但在運行時我得到sqlalchemy.orm.exc.UnmappedClassError: Class 'sqlalchemy.ext.declarative.Base' is not mapped
。我究竟做錯了什麼?
UPDATE 我已經做簡單的預處理,這樣規避了問題:
def setupEntities():
...
for cls in Entity.__subclasses__():
listen(cls, 'before_insert', update_entity)
listen(cls, 'before_update', update_entity)
...
...但我想聽聽關於做正確的方式。
到目前爲止,我的辦法是工作正常,但我會努力也是你,謝謝。 – AlexVhr