FastAPI-App: Enum dynamisch erstellen und in SQLAlchemy-Modellen ohne zirkuläre Abhängigkeiten verwenden?Python

Python-Programme
Guest
 FastAPI-App: Enum dynamisch erstellen und in SQLAlchemy-Modellen ohne zirkuläre Abhängigkeiten verwenden?

Post by Guest »

Meine App ist wie unten gezeigt aufgebaut.

Code: Select all

app/
├── backend/
│   └── main.py
├── models/
│   └── my_model.py
└── utils/
└── enums.py

Code: Select all

main.py
instanziiert ein Konfigurationsdikt, das das Schlüsselpräfix enthält, aus einer Yaml-Datei, die in enums.py benötigt wird, um Schemanamen zur Laufzeit zu generieren.
utils/enums.py:

Code: Select all

def create_schema_names(prefix: str) -> Type[Enum]:

class SchemaNames(str, Enum):
RAW = prefix + "_RAW"
STAGING = prefix + "_STAGING"
TRANSFORMED = prefix + "_TRANSFORMED"

return SchemaNames
Ich möchte SchemaNames in meinen SQLAlchemy-Modellen in my_model.py verwenden, um das Schema für jedes Modell anzugeben: __table_args__ = {"schema": SchemaNames.RAW .value.
Problem:
Importieren von SchemaNames in my_model.py< /code> führt zu einem Rundschreiben Abhängigkeiten, da die Konfiguration in main.py definiert ist.
Ich möchte die Verwendung globaler Variablen vermeiden, indem ich SchemaNames global exportiere.
Wie kann ich dynamisch die SchemaNames-Enumeration basierend auf der Laufzeitkonfiguration erstellen und in SQLAlchemy-Modellen verwenden, ohne zirkuläre Abhängigkeiten zu verursachen oder sich auf globale Exporte zu verlassen? Welchen Best-Practice-Ansatz gibt es dafür?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post