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
Datenbank per Frontend füttern
-
- User
- Beiträge: 89
- Registriert: Mittwoch 15. Januar 2014, 22:30
- Wohnort: Bad Kötzting
- Kontaktdaten:
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.
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.
-
- 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
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
- pillmuncher
- User
- Beiträge: 1485
- 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.
- noisefloor
- User
- Beiträge: 3875
- 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
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
- __blackjack__
- User
- Beiträge: 13190
- 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.
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.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
-
- 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 (...)"