Eine Datenbank ist eine Abstraktion über dem Dateisystem eines Betriebssystems, die es Entwicklern erleichtert, Anwendungen zu erstellen, die dauerhafte Daten erstellen, lesen, aktualisieren und löschen.

Warum sind Datenbanken notwendig?

Auf einer hohen Ebene speichern Webanwendungen Daten und stellen sie den Benutzern auf anschauliche Weise dar. So speichert Google beispielsweise Daten über Straßen und bietet über die Anwendung Maps Wegbeschreibungen für die Fahrt von einem Ort zum anderen an. Fahranweisungen sind möglich, weil die Daten in einem strukturierten Format gespeichert sind.

Datenbanken machen die strukturierte Speicherung zuverlässig und schnell. Sie geben Ihnen auch ein mentales Gerüst dafür, wie die Daten gespeichert und abgerufen werden sollten, anstatt jedes Mal, wenn Sie eine neue Anwendung erstellen, herausfinden zu müssen, was mit den Daten geschehen soll.

Datenbanken sind ein Konzept mit vielen Implementierungen, darunter PostgreSQL, MySQL und SQLite. Es gibt auch nicht-relationale Datenbanken, sogenannte NoSQL-Datenspeicher. Erfahren Sie mehr im Daten-Kapitel oder sehen Sie sich das Inhaltsverzeichnis für alle Themen an.

Relationale Datenbanken

Die in der Python-Webentwicklung am häufigsten verwendete Datenbank-Speicherabstraktion sind Sätze von relationalen Tabellen. Alternative Speicherabstraktionen werden auf der NoSQL-Seite erläutert.

Relationale Datenbanken speichern Daten in einer Reihe von Tabellen. Die Verbindungen zwischen den Tabellen werden als Fremdschlüssel angegeben. Ein Fremdschlüssel ist ein eindeutiger Verweis von einer Zeile in einer relationalen Tabelle auf eine andere Zeile in einer Tabelle, die dieselbe Tabelle sein kann, aber meistens eine andere Tabelle ist.

Die Speicherimplementierungen von Datenbanken sind unterschiedlich komplex. SQLite, eine mit Python mitgelieferte Datenbank, erstellt eine einzige Datei für alle Daten pro Datenbank. Andere Datenbanken wie PostgreSQL, MySQL, Oracle und Microsoft SQL Server verfügen über kompliziertere Persistenzschemata und bieten gleichzeitig zusätzliche erweiterte Funktionen, die für die Datenspeicherung in Webanwendungen nützlich sind. Zu diesen erweiterten Funktionen gehören unter anderem:

  1. Datenreplikation zwischen einer Master-Datenbank und einer oder mehreren schreibgeschützten Slave-Instanzen
  2. erweiterte Spaltentypen, die semistrukturierte Daten wie JavaScript Object Notation (JSON)
  3. sharding effizient speichern können, horizontale Skalierung mehrerer Datenbanken, die jeweils als Lese- und Schreibinstanzen dienen, auf Kosten von Latenz bei der Datenkonsistenz
  4. Überwachung, Statistiken und andere nützliche Laufzeitinformationen für Datenbankschemata und Tabellen

Typischerweise beginnen Webanwendungen mit einer einzigen Datenbankinstanz wie PostgreSQL mit einem einfachen Schema. Im Laufe der Zeit entwickelt sich das Datenbankschema zu einer komplexeren Struktur unter Verwendung von Schemamigrationen, und erweiterte Funktionen wie Replikation, Sharding und Überwachung werden immer nützlicher, wenn die Datenbankauslastung entsprechend den Anforderungen der Anwendungsbenutzer steigt.

Gängigste Datenbanken für Python-Webanwendungen

PostgreSQL und MySQL sind zwei der gängigsten Open-Source-Datenbanken für die Speicherung der Daten von Python-Webanwendungen.

SQLite ist eine Datenbank, die in einer einzigen Datei auf der Festplatte gespeichert wird. SQLite ist in Python integriert, aber nur für den Zugriff durch eine einzige Verbindung zur gleichen Zeit ausgelegt. Daher wird dringend davon abgeraten, eine produktive Webanwendung mit SQLite zu betreiben.

PostgreSQL Datenbank

PostgreSQL ist die empfohlene relationale Datenbank für die Arbeit mit Python-Webanwendungen. Der Funktionsumfang, die aktive Entwicklung und die Stabilität von PostgreSQL tragen dazu bei, dass es heute als Backend für Millionen von Anwendungen im Web verwendet wird.

Erfahren Sie mehr über die Verwendung von PostgreSQL mit Python auf der SeitePostgreSQL.

MySQL-Datenbank

MySQL ist eine weitere brauchbare Open-Source-Datenbankimplementierung für Python-Anwendungen. MySQL hat eine etwas einfachere Lernkurve als PostgreSQL, ist aber nicht so funktionsreich.

Erfahren Sie mehr über Python-Anwendungen mit einer MySQL-Datenbank im Hintergrund auf der speziellen MySQL-Seite.

Verbinden mit einer Datenbank mit Python

Um mit einer relationalen Datenbank mit Python zu arbeiten, müssen Sie eine Code-Bibliothek verwenden. Die gängigsten Bibliotheken für relationale Datenbanken sind:

  • psycopg2(Quellcode)für PostgreSQL.

  • MySQLdb(Quellcode)für MySQL. Beachten Sie, dass die Entwicklung dieses Treibers größtenteils eingefroren ist, so dass es ratsam ist, alternative Treiber zu evaluieren, wenn SieMySQL als Backend verwenden.

  • cx_Oracle fürOracle Database (Quellcode).Oracle hat 2017 den Quellcode des Iropen-Treibers von SourceForge zu GitHub verschoben.

SQLite-Unterstützung ist in Python 2.7+ integriert und daher ist eine separate Bibliothek nicht erforderlich. Einfach „import sqlite3“, um mit der dateibasierten Datenbank zu interagieren.

Objektrelationales Mapping

Objektrelationale Mapper (ORMs) ermöglichen es Entwicklern, auf Daten vom Backend aus zuzugreifen, indem sie Python-Code statt SQL-Abfragen schreiben. Jedes Webapplikations-Framework behandelt die Integration von ORMs anders. Es gibt eine ganze Seite über objektrelationales Mapping (ORMs), die Sie lesen sollten, um dieses Thema in den Griff zu bekommen.

Datenbankdienste von Drittanbietern

Zahlreiche Unternehmen betreiben skalierbare Datenbankserver als gehosteten Dienst.Gehostete Datenbanken können je nach Anbieter oft automatische Backups und Wiederherstellungen, verschärfte Sicherheitskonfigurationen und eine einfache vertikale Skalierung bieten.

  • Amazon Relational Database Service (RDS) bietet vorkonfigurierte MySQL- und PostgreSQL-Instanzen. Die Instanzen können je nach Speicher- und Leistungsbedarf zu größeren oder kleineren Konfigurationen skaliert werden.

  • Google Cloud SQL ist ein Dienst mit verwalteten, gesicherten, replizierten und automatisch gepatchten MySQL-Instanzen. CloudSQL ist in Google App Engine integriert, kann aber auch unabhängig davon genutzt werden.

  • BitCan bietet sowohl für MySQL als auch für MongoDB gehostete Datenbanken mit umfassenden Backup-Diensten.

  • ElephantSQL ist ein Software-as-a-Service-Unternehmen, das PostgreSQL-Datenbanken hostet und die Serverkonfiguration, Backups und Datenverbindungen auf Amazon Web Services-Instanzen verwaltet.

SQL-Ressourcen

Sie planen vielleicht, einen objektrelationalen Mapper (ORM) als Hauptmethode für die Interaktion mit einer Datenbank zu verwenden, aber Sie sollten dennoch die Grundlagen von SQL erlernen, um Schemata zu erstellen und den vom ORM erzeugten SQL-Code zu verstehen. Die folgenden Ressourcen können Ihnen dabei helfen, SQL auf den neuesten Stand zu bringen, wenn Sie es noch nie benutzt haben.

  • Select Star SQL ist ein interaktives Buch zum Erlernen von SQL. Sehr empfehlenswert, auch wenn Sie glauben, dass Sie in Ihren Projekten nur mit einer objektrelationalen Abbildung arbeiten werden, denn Sie wissen nie, wann Sie in SQL einsteigen müssen, um die langsame Leistung einer generierten Abfrage zu verbessern.

  • Ein Leitfaden für Anfänger in SQL erklärt die wichtigsten Schlüsselwörter, die in SQL-Anweisungen verwendet werden, wie SELECT, WHERE, FROM, UPDATE und DELETE.

  • Das SQL-Tutorial vermittelt die SQL-Grundlagen, die in allen wichtigen relationalen Datenbankimplementierungen verwendet werden können.

  • Das Leben einer SQL-AbfrageErklärt, was sowohl konzeptionell als auch technisch innerhalb einer Datenbank geschieht, wenn eine SQL-Abfrage ausgeführt wird. Der Autor verwendetPostgreSQL als Beispieldatenbank und SQL-Syntax.

  • Ein wahrscheinlich unvollständiger, umfassender Leitfaden zu den vielen verschiedenen Möglichkeiten, Tabellen in SQL zu JOINen,JOINerläutert einen der kniffligsten Teile beim Schreiben von SQL-Anweisungen, die eine oder mehrere Tabellen verbinden.

  • Besseres SQL schreiben ist ein kurzer Leitfaden für die Gestaltung von Code, um Ihre Abfragen leichter lesbar zu machen.

  • SQL Intermediate ist ein Tutorial, das über die Grundlagen hinausgeht und offene Daten desUS Consumer Financial Protection Bureau als Beispiele für das Zählen, Abfragen und Verwenden von Ansichten in PostgreSQL verwendet.

Allgemeine Datenbank-Ressourcen

  • Wie funktioniert eine relationale Datenbank?ist ein detaillierter Longform-Beitrag über das Sortieren, Suchen, Zusammenführen und andere Vorgänge, die wir oft als selbstverständlich ansehen, wenn wir eine etablierte relationale Datenbank wie PostgreSQL verwenden.

  • Databases 101 gibt einen guten Überblick über die wichtigsten relationalen Datenbankkonzepte, der auch für Nicht-Entwickler als Einführung geeignet ist.

  • Five Mistakes Beginners Make When Working With Databasesexplained why you should not store images in databases as well as to becautious with how you normalize your schema.

  • DB-Engines erstellt eine Rangliste der beliebtesten Datenbankmanagementsysteme.

  • DB Weekly ist eine wöchentliche Zusammenstellung allgemeiner Datenbankartikel und -ressourcen.

  • Designing Highly Scalable Database Architecturescovers horizontal and vertical scaling, replication and caching inrelational database architectures.

  • Online migrations at scaleis a great read on breaking down the complexity of a database schemamigration for an operational database. Der Ansatz, den das Team des Autors verwendete, war ein 4-stufiges duales Schreibmuster, um die Art und Weise, wie Daten für Abonnements gespeichert wurden, sorgfältig zu entwickeln, so dass sie auf ein neues, effizienteres Speichermodell umgestellt werden konnten.

  • Eine Einheitsdatenbank passt für niemandenErläutert die spezifischen Gründe von Amazon Web Services für das Vorhandensein so vieler Arten von relationalen und nicht-relationalen Datenbanken auf seiner Plattform, aber der Artikel ist auch ein guter Überblick über verschiedene Datenbankmodelle und ihre Anwendungsfälle.

  • SQL ist 43 Jahre alt – hier sind 8 Gründe, warum wir es heute noch verwendenListet auf, warum SQL von fast allen Entwicklern verwendet wird, auch wenn sich die Sprache ihrem fünfzigsten Jahrestag nähert.

  • SQL-Schlüssel in der Tiefe bietet eine großartige Erklärung dafür, was Primärschlüssel sind und wie Sie sie verwenden sollten.

  • Die Untersuchung eines Datensatzes in SQL ist ein gutes Beispiel dafür, wie SQL allein zur Datenanalyse verwendet werden kann. In diesem Tutorium wird anhand von Spotify-Daten gezeigt, wie man das, was man aus einem Datensatz lernen möchte, extrahieren kann.

  • Strategien für das Testen der Datenbankintegration decken ein schwieriges Thema ab, das in jedem realen Projekt auftaucht.

  • GitLab hat seinen Postmortem eines Datenbankausfalls am 31. Januar zur Verfügung gestellt, um für Kunden transparent zu sein und anderen Entwicklungsteams zu helfen, zu erfahren, wie sie ihre Datenbanksysteme vermurkst und dann einen Weg zur Wiederherstellung gefunden haben.

  • Asynchronous Python and Databasesist ein ausführlicher Artikel, der erklärt, warum viele Python-Datenbanktreiber aufgrund der Unterschiede zwischen blockierenden und asynchronen Ereignismodellen nicht ohne Änderungen verwendet werden können. Definitiv lesenswert, wenn SieWebSockets über Tornado oder gevent verwenden.

  • PostgreSQL vs. MS SQL Server ist eine Perspektive auf die Unterschiede zwischen den beiden Datenbankservern von einem Datenanalysten.

Datenbanken Lerncheckliste

  1. Installieren Sie PostgreSQL auf Ihrem Server. Angenommen, Sie haben sich für Ubuntu entschiedensudo apt-get install postgresql.

  2. Stellen Sie sicher, dass die psycopg2-Bibliothek in den Abhängigkeiten Ihrer Anwendung enthalten ist.

  3. Konfigurieren Sie Ihre Webanwendung so, dass sie sich mit der PostgreSQL-Instanz verbindet.

  4. Erstellen Sie Modelle in Ihrem ORM, entweder mit dem eingebauten ORM von Django oder mitSQLAlchemy mit Flask.

  5. Erstellen Sie Ihre Datenbanktabellen oder synchronisieren Sie die ORM-Modelle mit der PostgreSQL-Instanz, wenn Sie einen ORM verwenden.

  6. Starten Sie das Erstellen, Lesen, Aktualisieren und Löschen von Daten in der Datenbank aus Ihrer Webanwendung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.