Я хотел бы поделиться своей моделью данных между различными Elixir / SQLAlchemy приложениями, одним из которых будет пользовательский интерфейс Camelot , а другими - веб-интерфейсоминтерфейсы и тд.Все они будут подключаться к одной и той же базовой базе данных.
Насколько я знаю, для создания приложения Camelot моя модель будет делать from camelot import blah
, что не позволит ему работать в любой среде без установленного Camelot.
Я хотел бы знать, есть ли рекомендуемый способ / наилучшая практика для этого.Идея, конечно, состоит в том, чтобы поддерживать единую кодовую базу для моей модели, а не копировать ее с небольшими различиями между различными приложениями (например, импорт из SA / Elixir здесь, из Camelot там и т. Д.).
Мой проект в настоящее время разрабатывается с пакетом модель / Python:
model/__init__.py
foo.py
bar.py
...
init .py выглядит так:
from foo import a, b, c
from bar import d, e, f
__all__ = ('a', 'b', 'c', 'd', 'e', 'f')
и модули Python foo.py, bar.py и т. д. фактически реализуют различные части.Каждый из этих модулей начинается следующим образом:
from sqlalchemy import Integer, Numeric, Date, Unicode, LargeBinary
from elixir import Entity, Field, ManyToOne, OneToMany, ManyToMany
from elixir import using_options
Идея может состоять в том, чтобы сделать что-то вроде:
try:
from camelot import Integer, Numeric, ...
except ImportError:
from elixir import Integer, Numeric, ...
это будет на самом деле хорошая идея иличто-то мне не хватает?Кроме того, в идеале я бы занимался подобными вещами «инициализации среды» в каком-то центральном месте, например, в model/__init__.py
, но как мне передать мой импорт базовым модулям?