Added a note on when the code is executed and sql-schema versioning.

This commit is contained in:
Philipp Horstenkamp 2023-12-31 17:11:24 +01:00
parent 3e0c2d055a
commit abbf565557

View File

@ -73,13 +73,15 @@ AnnualFinanceStatement = type(
Das Anlegen der Klassen alleine reicht nicht aus, um diese in einer SQL Datenbank anzulegen.
Diese müssen über das `Base`-Objekt wie folgt Initialisiert werden.
Dabei werden nur fehlende Tabellen initialisiert.
```python
Base.metadata.create_all(db.bind)
```
Dabei ist `db` eine `sqlalchemy.orm.Session` welche über eine SQL-Engine mit einer Datenbank verbindet.
Die Datenbank wird am Anfang des `dataprocessing` nach dem fast vollständigen Reset der Datenbank.
Ausgeschlossen davon ist eine Tabelle, welche nicht Firmen listed für die Verbindungen gefunden wurde, ohne das diese in unseren Daten gefunden wurden.
Das resultierende SQL-Schema sieht dann wie folgt aus:
```{eval-rst}
@ -87,3 +89,6 @@ Das resultierende SQL-Schema sieht dann wie folgt aus:
:format: png
:page-index: 1
```
Es gibt Schema verändernde, versionierende Erweiterungen für `SQLAlchemy`, wie `Alembic` oder `SQLAlchemy-mirgrate`.
Durch ein Softwaredesign welche die Produktivtabellen aber regelmäßig reinitialisiert wird dies unnötig.