实际上,我正在使用 python 3.4 为桌面设计一个大型应用程序。我选择了端口和适配器架构,即六边形架构。它的主要目的是使用可重用的组件。
为了组织代码并制定一些规则,我们将使用 Zope 组件架构 (ZCA)
所以要做一些 POC,我正在创建数据库组件。但是使用 ORM 的事实阻止了我。我的意思是我设计了一些看起来像的数据库组件:
-IDatabase -IDatabaseConfig -IEntity -IKey -IReader -IWriter ... 和实现。
SQLAlchemy 管理很多东西,我不知道如何使我的组件可重用。
我找到了这段代码:
#Reflect each database table we need to use, using metadata
class Customer(Base):
__table__ = Table('Customers', metadata, autoload=True)
orders = relationship("Order", backref="customer")
class Shipper(Base):
__table__ = Table('Shippers', metadata, autoload=True)
orders = relationship("Order", backref="shipper")
class Product(Base):
__table__ = Table('Products', metadata, autoload=True)
supplier = relationship('Supplier', backref='products')
category = relationship('Category', backref='products')
但我猜这段代码真的很难与 SQLAlchemy 耦合。那么我应该在我的架构中使用什么方法呢?
由于实体必须是应用程序的中心(域层),如果我需要更改我的数据库组件并且不使用 SQLAlchemy,那么该解决方案会出现问题吗?
我愿意接受所有建议。