Ответы пользователя по тегу Python
  • Как разнести модели в одтельные файлы в PonyORM?

    @metaprogrammer
    Добрый день!

    Ответ angru является правильным, я просто дам несколько дополнительных уточнений.

    Как правильно сказано, generate_mapping() нужно вызывать один раз после того, как все сущности определены. После этого схема фиксируется и добавлять новые сущности в нее уже нельзя.

    Когда объявляется класс сущности, то он становится доступен как атрибут объекта базы данных. То есть, если сущность опредена как:

    db = Database()
    
    class Person(db.Entity):
        name = Required(str)

    то после этого можно ссылаться на нее так: db.Person. Например, в запросах:

    select(p for p in db.Person if p.name.startswith('A'))

    Поэтому импортировать модели в main.py необязательно - они уже доступны там как атрибуты объекта db.

    Часть наиболее важных сущностей можно при желании определить в том же самом файле, где объявляется объект db.

    Иногда может быть удобнее не объявлять параметры объекта Database сразу при его создании, а выполнять метод db.bind(...) непосредственно перед выполнением метода db.generate_mapping(...) - тогда одни и те же сущности могут использованы с разными типами баз данных (например, SQLite и MySQL).
    Ответ написан
    5 комментариев