Куда мне поместить папку, созданную перегонным кубом?Python

Программы на Python
Ответить
Anonymous
 Куда мне поместить папку, созданную перегонным кубом?

Сообщение Anonymous »

Я запускаю проект fastapi и использую sqlalchemy + alembic для управления базой данных sqlite. Все работало нормально до перегонного куба.
Вот структура папок проекта:

Код: Выделить всё

app/
- api/
- core/
- __init__.py
- settings.py
- db/
- __init__.py
- database.py
(Я поместил __init__.py во все папки)
Сначала я попытался создать папку миграции внутри db/< /code>, но безуспешно (та же ошибка, что и ниже). Поэтому я выполнил миграцию инициализации перегонного куба в корневой папке app/.
Теперь папка выглядит так:

Код: Выделить всё

app/
- api/
- core/
- __init__.py
- settings.py
- db/
- __init__.py
- database.py
- migrations/
- versions/
- env.py
- alembic.ini
И я изменил env.py:

Код: Выделить всё

from ..db.database import Base
from ..core.settings import settings

target_metadata = Base.metadata

def get_url():
return settings.db_url
Затем я попробовал в приложении/ Но все жаловались:

Код: Выделить всё

...
from ..db.database import Base
ImportError: attempted relative import with no known parent package
И поскольку у нас есть prepend_sys_path = . в alembic.ini, импорт, например, из базы импорта db.database, будет работать. Однако я использовал относительный импорт в db/database.py и core/settings.py, а также во всех других файлах и не хочу изменять коды.
Мои вопросы:
  • Может быть, я мог бы разместить папку миграции за пределами приложения/ и изменить относительный импорт на app.db.database?
  • это может работать для одного верхнего уровня приложение, но что делать, если у меня есть несколько подприложений (

    Код: Выделить всё

    app/subapps/sub1
    , app/subapps/sub2) и хотите управлять отдельным файлом sqlite для каждого подприложения?
  • или, может быть, перегонный куб просто не тот правильный выбор для моего варианта использования?


Подробнее здесь: https://stackoverflow.com/questions/708 ... ted-folder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»