Created
July 6, 2013 23:43
-
-
Save hamstah/5941684 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from .common import DeclarativeBase, BaseModel | |
from .columns import (UUIDColumn, | |
BalanceColumn, | |
TimestampColumn, | |
CurrencyColumn, | |
TimestampColumn, | |
BalanceColumn, | |
UUIDColumn, | |
AccountTypeColumn, | |
UUIDColumn, | |
NumberColumn | |
) | |
from sqlalchemy import Column, Float, Integer, String, ForeignKey | |
class AccountModel(DeclarativeBase, BaseModel): | |
__tablename__ = 'account' | |
__table_args__ = {} | |
__base_type__ = Account | |
# columns definitions | |
account_id = Column(UUIDColumn(), primary_key=True, nullable=False) | |
available_balance = Column(BalanceColumn(), nullable=False) | |
created = Column(TimestampColumn(), nullable=False) | |
currency = Column(CurrencyColumn(), nullable=False) | |
last_updated = Column(TimestampColumn(), nullable=False) | |
ledger_balance = Column(BalanceColumn(), nullable=False) | |
number = Column(NumberColumn(), nullable=False) | |
owner_id = Column(UUIDColumn(), ForeignKey('person.person_id'), nullable=False) | |
type = Column(AccountTypeColumn(), nullable=False) | |
user_id = Column(UUIDColumn(), ForeignKey('person.person_id'), nullable=False) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from .common import DeclarativeBase, BaseModel | |
from sqlalchemy.orm import validates | |
from .columns import (UUIDColumn, | |
TimestampColumn, | |
CardLockStatusColumn, | |
CardStatusColumn, | |
CardTypeColumn, | |
) | |
from sqlalchemy import Column, Float, Integer, String, ForeignKey | |
class CardModel(DeclarativeBase, BaseModel): | |
__tablename__ = 'card' | |
__table_args__ = {} | |
__base_type__ = Card | |
# columns definitions | |
account_id = Column(UUIDColumn(), ForeignKey('account.account_id'), nullable=False) | |
card_id = Column(UUIDColumn(), primary_key=True, nullable=False) | |
created = Column(TimestampColumn(), nullable=False) | |
last_updated = Column(TimestampColumn(), nullable=False) | |
lock_status = Column(CardLockStatusColumn(), nullable=False) | |
owner_id = Column(UUIDColumn(), ForeignKey('person.person_id'), nullable=False) | |
status = Column(CardStatusColumn(), nullable=False) | |
type = Column(CardTypeColumn(), nullable=False) | |
user_id = Column(UUIDColumn(), ForeignKey('person.person_id'), nullable=False) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from sqlalchemy.ext.declarative import declarative_base | |
from sqlalchemy.types import TypeDecorator | |
DeclarativeBase = declarative_base() | |
class BaseModel: | |
def to_base_type(self): | |
args = {arg: getattr(self, arg) | |
for arg in self.__base_type__._valid_args} | |
return self.__base_type__(**args) | |
@classmethod | |
def from_base_type(cls, source): | |
args = {arg: getattr(source, arg) | |
for arg in cls.__base_type__._valid_args} | |
return cls(**args) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from sqlalchemy import create_engine | |
from sqlalchemy.orm import sessionmaker | |
from .generated.models.common import DeclarativeBase | |
from . import config | |
session = None | |
def init(db_path): | |
metadata = DeclarativeBase.metadata | |
engine = create_engine(db_path) | |
metadata.bind = engine | |
metadata.create_all() | |
return sessionmaker(bind=engine)() | |
if session is None: | |
session = init(config.DB_PATH) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Error when calling create_all
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'card.account_id' could not find table 'account' with which to generate a foreign key to target column 'account_id'