0
比方說,我們有幾個SQLAlchemy的模型目錄:自動化SQLAlchemy的聲明模型創建
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer
from sqlalchemy.orm import relationship
Base = declarative_base()
class Plane(Base):
__tablename__ = 'Plane'
plane_id = Column(Integer, primary_key=True)
class Car(Base):
__tablename__ = 'Car'
car_id = Column(Integer, primary_key=True)
現在對於我們想這些涉及到外部IDS進口/出口的目的。因此,對於Plane
,我們可以這樣寫:
class PlaneID(Base):
issuer = Column(String(32), primary_key=True)
external_id = Column(String(16), primary_key=True)
plane_id = Column(Integer, ForeignKey(Plane.plane_id))
plane = relationship(Plane, backref='external_ids')
一個CarID
模型將在完全相同的方式來定義。
有什麼可能使這個過程自動化?
也許我們可以使用mixin,factory,decorator或meta class。那麼我們將如何生成動態命名的列呢?能夠根據需要爲生成的模型添加更多的列將是一件好事。例如:
class CarID(ExternalID):
valid_from = Column(Date)
那麼,我將不得不將所有的模型都放在'ExternalID'上,我不會嗎? – bodo
@canaaerus是的,這是正確的。 –