Skip to content

Instantly share code, notes, and snippets.

@hamstah
Created July 6, 2013 23:43
Show Gist options
  • Save hamstah/5941684 to your computer and use it in GitHub Desktop.
Save hamstah/5941684 to your computer and use it in GitHub Desktop.
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)
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)
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)
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)
@hamstah
Copy link
Author

hamstah commented Jul 6, 2013

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'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment