mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-06-21 21:33:55 +02:00
Update 4-4-2-database-generator.md
This commit is contained in:
@ -1,9 +1,9 @@
|
||||
### Database Generator (Philipp Horstenkamp)
|
||||
|
||||
Zur Definition eines Relationalen Datenbankschemas und um zur Härtung gegen SQL-Injections wurde SQLAlchemy als SQL Interface / Driver / Abstraction layer genutzt.
|
||||
SQLAlchemy sorgt dabei für ein stark dialekt unabhängiges Interface.
|
||||
Zur Definition eines Relationalen Datenbankschemas und zur Härtung gegen SQL-Injections wurde SQLAlchemy als SQL Interface / Driver / Abstraction layer genutzt.
|
||||
SQLAlchemy sorgt dabei für ein Dialekt unabhängiges Interface, um unabhängig von der verwendeten Datenbank zu sein.
|
||||
|
||||
Auch wenn es seit einiger Zeit SQLAlchemy2 gibt haben wir uns entschieden mit Version 1.4 zu nutzen da es zur Version 2 nur wenig Dokumentation externe Dokumentation und Beispiele gab.
|
||||
Auch wenn es seit einiger Zeit SQLAlchemy2 gibt haben wir uns entschieden Version 1.4 zu nutzen da es zur Version 2 nur wenig Dokumentation, externe Dokumentation und Beispiele gab.
|
||||
SQLAlchemy ist ein sehr mächtiges und beliebtes Werkzeug, leider ist die Projektdokumentation sehr undurchsichtig.
|
||||
Da aber SQLAlchemy1.4 zurzeit noch gewartet wird, ist dies für dieses Projekt kein Problem.
|
||||
|
||||
@ -49,8 +49,7 @@ class Company(Base):
|
||||
|
||||
Natürlich ist es manchmal sinnvoll SQL-Tabellen dynamischer und mit wenig Code-Duplication zu generieren.
|
||||
Eine Möglichkeit dazu ist die folgende Definition in der die Union einiger Teildefinitionen als Dictionary.
|
||||
So kann zum Beispiel eine Tabelle generiert werden,
|
||||
in der ein Enumerationswert die Column angibt ohne das die Datenbank durch den Enum als Foreign Key aufgeblasen/verlangsamt wird.
|
||||
So kann zum Beispiel eine Tabelle generiert werden, in der ein Enumerationswert die Column angibt ohne das die Datenbank durch den Enum als Foreign Key aufgeblasen/verlangsamt wird.
|
||||
|
||||
```python
|
||||
from aki_prj23_transparenzregister.utils.enum_types import (
|
||||
@ -80,7 +79,7 @@ Base.metadata.create_all(db.bind)
|
||||
Dabei ist `db` eine `sqlalchemy.orm.Session` welche über eine SQL-Engine mit einer Datenbank verbindet.
|
||||
|
||||
|
||||
Das resultierende SQL-Schema sieht dan wie folgt aus:
|
||||
Das resultierende SQL-Schema sieht dann wie folgt aus:
|
||||
```{eval-rst}
|
||||
.. drawio-figure:: db-schema.drawio
|
||||
:format: png
|
||||
|
Reference in New Issue
Block a user