그래서 저는이 python과 sqlalchemy를 처음 사용합니다. 상속이나 믹스 인 (상속)에 도움이 필요합니다.sqlalchemy의 python 상속
는 좀 psudo 코드를 가지고 있지만 난 정말 어디서나 얻을 수있는 진전되지 않은 :
Base = declarative_base()
class ModelBase(Base):
"""Base model that only defines last_updated"""
__tablename__ = 'doesnotexistandtheclassshouldnotbeinstantiated'
#all tables inheriting from ModelBase will have this column
last_updated = Column(DateTime)
def __init__(self, last_updated):
self.last_updated = last_updated
class User(ModelBase):
"""Defines the user but should also have the last_updated inherited from ModelBase"""
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
def __init__(self, ....):
ModelBase.__init__(last_updated)
내가 ModelBase에서 상속 모든 테이블도 LAST_UPDATED 갖고 싶어. 내가 어떻게 그럴 수 있니?
업데이트 된 코드 :
class BaseUserMixin(object):
"""Base mixin for models using stamped data"""
@declared_attr
def last_updated(cls):
return Column(DateTime)
@declared_attr
def last_updated_by(cls):
return Column(String)
def __init__(self, last_updated, last_updated_by):
self.last_updated = last_updated
self.last_updated_by = last_updated_by
Base = declarative_base(cls=BaseUserMixin)
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
fullname = Column(String)
password = Column(String)
enabled = Column(Boolean)
def __init__(self, name, fullname, password, email, last_updated, last_updated_by):
self.name = name
self.fullname = fullname
self.password = password
self.email = email
# goes wrong here
super(User, self).__init__(last_updated, last_updated_by)
def __repr__(self):
return "<User('%', '%', '%', '%', '%', '%')>"\
% (self.name,
self.fullname,
self.password,
self.email,
self.last_updated,
self.last_updated_by
)
오류 :
_declarative_constructor() takes exactly 1 argument (3 given)
무슨 문제가 될 수있다? 나는 그것이 작동하고 있다고 생각했지만 디버거를 다시 실행할 때 실패했다.
당신이이 질문에 봤습니까
cls=
인수를 사용하여 다시: 그건 이미
Column()
에 구운거야? http://stackoverflow.com/questions/1337095/sqlalchemy-inheritance 그것은 합리적으로 좋은 답변 인 것 같습니다. – Magsol예. 것은 그들이 관련이 없다는 것이고 그것은 'polymorphic_on'이 아닙니다 ... – Asken