En fait, je suis en train de concevoir une grande application pour desktop avec python 3.4. J'ai choisi l'architecture du port et de l'adaptateur, connue sous le nom d'architecture hexagonale. Le but principal de travailler avec des composants réutilisables.Créer un composant réutilisable avec ZCA et SQLAlchemy
Pour organiser le code et mettre des règles que nous utiliserons l'Zope Component Architecture (ZCA)
Donc, pour faire des POC, je crée le composant de base de données. Mais le fait de travailler avec un ORM me bloque. Je veux dire que je y construisirent composant base de données qui ressemblait à:
-IDatabase -IDatabaseConfig -IEntity -IKey -IReader -IWriter ... et la mise en œuvre.
SQLAlchemy beaucoup de choses et je ne sais pas comment rendre mon composant réutilisable.
j'ai trouvé ce code:
#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')
Mais ce code est couplé à peine avec realy SQLAlchemy je suppose. Alors, quelle est l'approche que je devrais utiliser avec mon architecture?
Étant donné que les entités doivent être le centre de l'application (couche de domaine), cela posera un problème avec cette solution si je dois modifier mon composant de base de données et ne pas utiliser SQLAlchemy?
Je suis ouvert à toutes les suggestions.