在插入数据库之前与ORM对象创建关系

时间:2018-01-19 06:29:22

标签: python-3.x sqlalchemy

现在我将相同数据的类加倍。第一个是BillExpense类,在本地用于在程序中交换数据。然后,我有Bill_TableExpense_Table,用于在程序和数据库之间交换数据。当我只想要其中一个时,这会使我的程序变得不必要。

Bill有一个成员变量,它是一个费用列表,如下所示:

class Bill:
    vendor = None  # type: str
    expenses = None  # type: list[Expense]
    # plenty more variables here

    def __init__(self, vendor=None,):
        self.vendor = vendor
        self.expenses = list()

class Expense:
    account = None  # type: str
    amount = None  # type: int
    # etc...

我的Bill_TableExpense_Table设置完全相同。我使用一些函数将Bill转换为Bill_table,或将Expense转换为Expense_Table,反之亦然。

from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Bill_Table(Base):
    __tablename__ = 'bills'
    id = Column(Integer, primary_key=True)
    expenses = relationship("Expense_Table")
    # etc...

class Expense_Table(Base):
    __tablename__ = 'expenses'
    id = Column(Integer, primary_key=True)
    bill_id = Column(Integer, ForeignKey('bills.id'))
    # etc...

如何在不连接数据库的情况下将一些Expense_Table对象映射到Bill_Table对象?所以我可以拥有相同的功能,但是当我将Bill_Table插入数据库时​​,它也会用它导入它的Expense_Table个对象吗?

0 个答案:

没有答案