Tengo algunos modelos estándar de SQLAlchemy que reutilizo en todos los proyectos. Algo como esto:Reutilización de modelos SQLAlchemy en proyectos
from sqlalchemy import Column, Integer, String, Unicode
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Category(Base):
__tablename__ = 'category'
id = Column(Integer, primary_key=True)
slug = Column(String(250), nullable=False, unique=True)
title = Column(Unicode(250), nullable=False)
def __call__(self):
return self.title
me gustaría poner esto en una biblioteca compartida y la importación en cada nuevo proyecto en lugar de cortar y pegar, pero no puedo, porque la instancia declarative_base
se define por separado en el proyecto. Si hay más de uno, no compartirán sesiones. ¿Cómo trabajo alrededor de esto?
Here's another question that suggests using mixin classes. Podría eso funcionar? ¿SQLAlchemy importará con precisión claves foráneas de clases mixin?
¿Qué haces con los objetos de base después de esto? Lo último que recuerdo es que pude unir múltiples metadatos de múltiples objetos Base al vincularlos todos al mismo motor. Me imagino que sería suficiente usar una sesión de ese motor para acceder a todas las tablas que ha definido. –
Nada más con el objeto Base. Si lo único que se necesita es vincular los metadatos, podría importar y volver a vincular fácilmente, al tiempo que aseguro que dos aplicaciones separadas no se ejecutan en el mismo proceso de Python. –