Datenbank per Frontend füttern

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

Servus Forum,

Wenn Datenbanken über eine Anwendung mit Daten gefüttert werden, werden diese
dann direkt vom Frontend aus in die Datenbank geschrieben, oder muss hierfür zuerst
noch irgendetwas eingebaut werden?

LG
nezzcarth
User
Beiträge: 1636
Registriert: Samstag 16. April 2011, 12:47

Deine Frage ist für mich leider nicht so gut verständlich. Ich sehe auch gerade den Bezug zu Python nicht. Kannst du das vielleicht noch (anders) ausführen? Was für eine (Art von) Datenbank meinst du?

Der Zugriff auf ein RDBMS (das ist, was oft gemeint ist, wenn einfach nur von Datenbank geredet wird), erfolgt jedenfalls normalerweise über eine/n Datenbankanbindung/-treiber, also über eine Bibliothek. Ein Programm, das mit der Datenbank kommuniziert, ist dann ein Datenbankclient, egal, ob das jetzt ein( GUI-)Frontend, oder irgendein Automatisierungsskript ist. Theoretisch kann man die meisten netzwerkfähigen Datenbanken auch direkt über einen Socket ansprechen, aber das ist absolut unüblich, umständlich und auch nicht nötig.
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

ich bitte um Entschuligung für die schwammige Schilderung.

Also, es arbeitet eine MySQL Datenbank im Hintergrund die per Pythonskript / GUI mit Werten versehen wird.
Es ist nun meine Frage, ob ein Skript / GUI direkt eine Datenbank befüllt, oder ob zwischen Datenbank und
GUI noch irgendetwas dazwischen gebaut werden muss.

Man könnte die Frage auch abkürzen auf: Werden in normal entwickelten Programmen, Datenbanken direkt
über MySQL Befehle, mit Daten versehen?

Ich habe nachfolgenden Satz in einem Forum gelesen, der mich zu dieser Frage gebracht hat:
Hey I will warn you that attaching your front-end (GUI or View) directly to your back-end (Database or Data Source or Model) is only going to cause issues later on
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@Hartmannsgruber: Schau mal auf https://www.sqlalchemy.org/
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

nee, nicht direkt. Dazwischen liegt immer noch mindestens das Python-Modul, dass die Klassen und Methoden zum Arbeiten mit der Datenbank bereit stellt. Im Falle von MySQL gibt es mehrere, die in Frage kommen. Die Python-Module für relationale Datenbanken folgen normalerweise der Python DB API 2.0. Wie so was aussieht kannst du in der Python-Doku nachschauen, wo die Anbindung an SQLite an Bord ist: Link

Je nach Komplexität der Anwendung macht es noch Sinn, einen ORM (object relational mapper) dazwischen zu packen, mit dem sich Datenbankeinträge wie Objekte ansprechen lassen (vereinfacht gesagt). DAS ORM unter Python ist SQLAlchemy. Sonst noch halbwegs gängig ist PeeWee und natürlich das Django ORM, wenn man mit Django arbeitet.

Wenn man Eingaben von beliebigen / ungekannten Nutzern entgegen nimmt, sollte man auch noch eine Datenvalidierung einbauen.

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich denke das englische Zitat geht noch einen Schritt weiter und empfiehlt, dass man beispielsweise zwischen ORM-Models und GUI-Frontend die Daten noch mal in andere Objekte umpacken soll, damit die GUI keine ORM-Models in die Finger bekommt. Also eine zusätzliche Schicht die GUI(-Frontend) und Datenhaltung wirklich hart trennt.

Kann man machen. Muss man aber nicht. Kommt IMHO auf Natur und Grösse des Projekts an, ob da eine zusätzliche Schicht sinnvoll ist oder nicht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Muss man bei Nutzung von SQLAlchemy eigentlich noch separat was gegen sql-injection tun oder verhindert ein ORM ohne raw-sql im code automatisch sql-injection?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
__deets__
User
Beiträge: 14544
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das verhindert das. Solange du nicht hart drumrum arbeitest.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn im Zitat von GUIs die Rede ist, dann meint es vielleicht die Trennung zwischen GUI und Geschäftslogik.
Antworten