Перетаскивание основных определений документа mongoengine в флеш-mongoengine
Я уже давно пользуюсь mongoengine и у меня есть тонна кода обработки данных на python, который опирается на общий набор моделей объектных документов.
Теперь мне нужно получить доступ к тем же экземплярам mongodb из Flask. Я хотел бы использовать те же определения ODM.
class User(Document):
email = StringField(required=True)
first_name = StringField(max_length=50)
last_name = StringField(max_length=50)
Проблема в том, что flask-mongoengine требует, чтобы вы сначала настроили свой контекст фляги "db", а затем создали свои определения ODM, унаследовав класс документа и типы полей от "db" вместо базовых классов mongoengine.
class User(db.Document):
email = db.StringField(required=True)
first_name = db.StringField(max_length=50)
last_name = db.StringField(max_length=50)
Я полагаю, что одним из решений является создание копий всех существующих определений ODM, импорт "db" из моего основного приложения для колб, а затем все с добавлением "db". Если я сделаю это, мне придется сохранить два набора почти идентичных определений ODM.
Если я просто все поменяю на "дб". версия, которая, вероятно, сломает весь мой старый код.
Поэтому я думаю, что может быть хитрость с использованием super() в классах документов, которые могут определить, импортирую ли я свой ODM в контекст Flask или импортирую его из автономного сценария обработки данных.
Я также думаю, что не хочу использовать super() для каждого типа поля для каждого документа, чтобы иметь возможность создавать или ссылаться на общую функцию, которая позаботилась об этом для меня.
Тем не менее, мои супер () навыки слабы. Я даже не уверен, что это лучший подход. Я надеялся, что кто-то сможет и пожелает поделиться некоторыми советами о том, как к этому подойти.