我正在开发一个SQLAlchemy来定义一堆mixin classes应用程序应该能够导入和扩展其模型。
查看documentation时,mixin类是创建知道最终表名的,但是在通用库的情况下,应用程序将使用的最终表名称是未知的。
参加以下mixin课程:
import sqlalchemy as sa
class UserMixin(object):
id = sa.Column(sa.Integer(), primary_key=True)
first_name = sa.Column(sa.Unicode(255))
last_name = sa.Column(sa.Unicode(255))
class ItemMixin(object):
id = sa.Column(sa.Integer(), primary_key=True)
name = sa.Column(sa.Unicode(255))
short_description = sa.Column(sa.Unicode(255))
class OrdersMixin(object):
id = sa.Column(sa.Integer(), primary_key=True)
user_id = sa.Column(sa.Integer(), sa.ForeignKey('???'))
item_id = sa.Column(sa.Integer(), sa.ForeignKey('???'))
然后是定义其模型的应用程序:
import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class MyUser(UserMixin, Base):
__tablename__ = 'myuser'
class MyItem(ItemMixin, Base):
__tablename__ = 'myitem'
total = sa.Column(sa.Integer())
class MyOrders(OrdersMixin, Base):
__tablename__ = 'myorders'
我对这个模型有两个问题:
id
可能来自应用程序本身或来自另一个mixin类。我试图实施的模型是否正确?什么是解决这个问题的正确方法?