Een database is een abstractie van het bestandssysteem van een besturingssysteem, die het voor ontwikkelaars gemakkelijker maakt om applicaties te bouwen die persistente data creëren, lezen, updaten en verwijderen.
Waarom zijn databases nodig?
Op een hoog niveau slaan webapplicaties data op en presenteren deze op een handige manier aan gebruikers. Google slaat bijvoorbeeld gegevens over wegen op en geeft via de kaarttoepassing aanwijzingen om van de ene plaats naar de andere te rijden. De routebeschrijving is mogelijk omdat de gegevens in een gestructureerd formaat zijn opgeslagen.
Databases maken gestructureerde opslag betrouwbaar en snel. Ze geven je ook een mentaal kader voor hoe de gegevens moeten worden opgeslagen en opgehaald, in plaats van dat je elke keer dat je een nieuwe applicatie bouwt, moet uitzoeken wat je met de gegevens moet doen.
Relationele databases
De database opslag abstractie die het meest wordt gebruikt in Python web ontwikkeling is sets van relationele tabellen. Alternatieve opslag abstracties worden uitgelegd op de NoSQL pagina.
Relationele databases slaan gegevens op in een reeks van tabellen. Interconnecties tussen de tabellen worden gespecificeerd als foreign keys. Een foreign key is een unieke verwijzing van een rij in een relationele tabel naar een andere rij in een tabel, die dezelfde tabel kan zijn, maar meestal een andere tabel.
Databases opslag implementaties variëren in complexiteit. SQLite, een database die met Python wordt meegeleverd, creëert een enkel bestand voor alle gegevens per database. Andere databases zoals PostgreSQL, MySQL, Oracle en Microsoft SQL Server hebben meer gecompliceerde persistentieschema’s en bieden tegelijkertijd extra geavanceerde functies die nuttig zijn voor de opslag van webapplicaties. Deze geavanceerde functies omvatten, maar zijn niet beperkt tot:
- datareplicatie tussen een master database en een of meer read-only slaveinstances
- geavanceerde kolomtypes die efficiënt semi-gestructureerde data kunnen opslaan zoals JavaScript Object Notation (JSON)
- sharding, die horizontale schaling van meerdere databases mogelijk maakt die elk dienen als lees-schrijf instanties ten koste van latency in dataconsistentie
- monitoring, statistieken en andere nuttige runtime informatie voor databaseschema’s en tabellen
Typisch starten web applicaties met een enkele database instantie zoals PostgreSQL met een rechttoe rechtaan schema. Na verloop van tijd evolueert het databaseschema naar een complexere structuur met behulp van schema migraties en geavanceerde functies zoals replicatie, sharding en monitoring worden nuttiger naarmate het databasegebruik toeneemt op basis van de behoeften van de gebruikers van de toepassing.
Gemeenschappelijkste databases voor Python web apps
PostgreSQL enMySQL zijn twee van de meest gebruikte open sourcedatabases voor het opslaan van de gegevens van Python web applicaties.
SQLite is een database die wordt opgeslagen in een enkel bestand op schijf. SQLite is ingebouwd in Python, maar is alleen gebouwd voor toegang door een enkele verbinding tegelijk. Daarom wordt het sterk aangeraden om een produktie web applicatie niet met SQLite te draaien.
PostgreSQL database
PostgreSQL is de aanbevolen relationele database voor het werken met Python web applicaties. PostgreSQL’s feature set, actieve ontwikkeling en stabiliteit dragen bij aan zijn gebruik als backend voor miljoenen applicaties op het Web vandaag de dag.
Lees meer over het gebruik van PostgreSQL met Python op dePostgreSQL pagina.
MySQL database
MySQL is een andere levensvatbare open source database implementatie voor Python-toepassingen. MySQL heeft een iets eenvoudiger leercurve danPostgreSQL, maar is niet zo rijk aan mogelijkheden.
Ontdek meer over Python applicaties met een MySQL back op de specialeMySQL pagina.
Verbinden met een database met Python
Om met een relationele database te werken met Python, moet je een code bibliotheek gebruiken. De meest gebruikte bibliotheken voor relationele databases zijn:
-
psycopg2(broncode)voor PostgreSQL.
-
MySQLdb(broncode)voor MySQL. De ontwikkeling van dit stuurprogramma is grotendeels stopgezet, dus het is verstandig om alternatieve stuurprogramma’s te evalueren als u MySQL als backend gebruikt.
-
cx_Oracle forOracle Database (broncode).Oracle heeft de code van hetiropenstuurprogramma in 2017 verplaatst van SourceForge naar GitHub.
SQLite-ondersteuning is ingebouwd in Python 2.7+ en daarom is een aparte bibliotheek niet nodig. Gewoon “import sqlite3” om te beginnen met de interface met de op één bestand gebaseerde database.
Object-relational Mapping
Object-relational mappers (ORM’s) stellen ontwikkelaars in staat om toegang te krijgen tot gegevens vanuit een backend door Python-code te schrijven in plaats van SQL-query’s. Elk webapplicatie framework gaat anders om met het integreren van ORMs. Er is een hele pagina over object-relational mapping (ORM’s) die u zou moeten lezen om grip op dit onderwerp te krijgen.
Database diensten van derden
Er zijn tal van bedrijven die schaalbare databaseservers als een gehoste dienst draaien.Gehoste databases bieden vaak geautomatiseerde back-ups en herstel, aangescherpte beveiligingsconfiguraties en eenvoudige verticale schaalbaarheid, afhankelijk van de leverancier.
-
Amazon Relational Database Service (RDS)biedt voorgeconfigureerde MySQL- en PostgreSQL-instanties. De instances kunnen worden geschaald naar grotere of kleinere configuraties op basis van opslag- en prestatiebehoeften.
-
Google Cloud SQL is een service met beheerde, geback-upte, gerepliceerde en automatisch gepatchte MySQL-instances. CloudSQL is geïntegreerd in Google App Engine, maar kan ook onafhankelijk worden gebruikt.
-
BitCan biedt zowel MySQL- als MongoDB-gehoste databases met uitgebreide back-upservices.
-
ElephantSQL is een software-as-a-servicebedrijf dat PostgreSQL-databases host en zorgt voor de serverconfiguratie, back-ups en gegevensverbindingen bovenop Amazon Web Services-instanties.
SQL-hulpmiddelen
U bent wellicht van plan een object-relational mapper (ORM) te gebruiken als uw belangrijkste manier om met een database te communiceren, maar u moet nog steeds de basisbeginselen van SQL leren om schema’s te maken en de SQL-code te begrijpen die door de ORM wordt gegenereerd. De volgende bronnen kunnen u helpen SQL onder de knie te krijgen als u het nog nooit hebt gebruikt.
-
Select Star SQL is een interactief boek om SQL te leren. Het is een echte aanrader, zelfs als je denkt dat je in je projecten alleen maar met een object-relationele map zult werken, omdat je nooit weet wanneer je in SQL moet duiken om de trage prestaties van een gegenereerde query te verbeteren.
-
Een beginnersgids voor SQL geeft een goede uitleg van de belangrijkste trefwoorden die in SQL-instructies worden gebruikt, zoals
SELECT
,WHERE
,FROM
,UPDATE
enDELETE
. -
SQL Tutorial leert de basisprincipes van SQL die kunnen worden gebruikt in alle belangrijke relationele database-implementaties.
-
Het leven van een SQL-query legt uit wat er zowel conceptueel als technisch binnen een database gebeurt wanneer een SQL-query wordt uitgevoerd. De auteur gebruikt PostgreSQL als voorbeelddatabase en SQL-syntaxis doorheen het hele artikel.
-
Een waarschijnlijk onvolledige, uitgebreide gids voor de vele verschillende manieren om tabellen te koppelen in SQL gaat dieper in op een van de lastigste onderdelen van het schrijven van SQL-instructies die een of meer tabellen koppelen: de
JOIN
. -
Het schrijven van betere SQL is een korte handleiding voor het opmaken van code om uw query’s leesbaarder te maken.
-
SQL Intermediate is een tutorial die verder gaat dan de basisbeginselen en gebruikmaakt van open gegevens van het US Consumer Financial Protection Bureau als voorbeelden voor het tellen, bevragen en gebruiken van weergaven in PostgreSQL.
Algemene databasebronnen
-
Hoe werkt een relationele database? is een gedetailleerd artikel over sorteren, zoeken, samenvoegen en andere bewerkingen die we vaak als vanzelfsprekend beschouwen wanneer we een gevestigde relationele database zoals PostgreSQL gebruiken.
-
Databases 101 geeft een goed overzicht van de belangrijkste relationele databaseconcepten en is zelfs voor niet-ontwikkelaars relevant als inleiding.
-
Five Mistakes Beginners Make When Working With Databasas legt uit waarom je geen afbeeldingen in databases moet opslaan en waarom je voorzichtig moet zijn met het normaliseren van je schema.
-
DB-Engines rangschikt de meest populaire databasemanagementsystemen.
-
DB Weekly is een wekelijks overzicht van algemene database-artikelen en -bronnen.
-
Designing Highly Scalable Database Architecturesbehandelt horizontale en verticale schaalbaarheid, replicatie en caching in relationele database-architecturen.
-
Online migraties op schaalis een uitstekende lezing over het ontleden van de complexiteit van een databaseschema-migratie voor een operationele database. De aanpak die het team van de auteur gebruikte, bestond uit een dubbel schrijfpatroon in vier stappen om de manier waarop gegevens voor abonnementen werden opgeslagen, zorgvuldig te evolueren zodat ze naar een nieuw, efficiënter opslagmodel konden verhuizen.
-
A one size fits all database doesn’t fit anyone legt uit waarom Amazon Web Services zoveel relationele en niet-relationele databases op zijn platform heeft, maar het artikel geeft ook een goed overzicht van de verschillende databasemodellen en hun gebruiksscenario’s.
-
SQL is 43 jaar oud – hier zijn 8 redenen waarom we het vandaag de dag nog steeds gebruikenlists why SQL is commonly used by almost all developers even as thelanguage approaches its fiftieth anniversary.
-
SQL-sleutels in de diepte biedt een uitstekende uitleg van wat primaire sleutels zijn en hoe u ze moet gebruiken.
-
Een gegevensset onderzoeken in SQL is een goed voorbeeld van hoe SQL alleen kan worden gebruikt voor gegevensanalyse. In deze tutorial wordt gebruikgemaakt van Spotify-gegevens om te laten zien hoe je uit een dataset kunt halen wat je wilt leren.
-
Strategieën voor het testen van databasesintegratie behandelen een moeilijk onderwerp dat bij elk project in de echte wereld aan de orde komt.
-
GitLab heeft op 31 januari een postmortem van een database-uitval gepubliceerd om transparant te zijn voor klanten en andere ontwikkelteams te helpen leren hoe ze hun databasesystemen hebben verknald en vervolgens een manier hebben gevonden om te herstellen.
-
Asynchrone Python en Databasesis een diepgaand artikel waarin wordt uitgelegd waarom veel Python-databasestuurprogramma’s niet zonder wijzigingen kunnen worden gebruikt vanwege de verschillen tussen de modellen voor blokkerende en niet-asychrone gebeurtenissen. Zeker de moeite waard om te lezen als jeWebSockets gebruikt via Tornado of gevent.
-
PostgreSQL vs. MS SQL Server is een kijk op de verschillen tussen de twee databaseservers van een data-analist.
Databases leren checklist
-
Installeer PostgreSQL op je server. In de veronderstelling dat u voor Ubuntu bent gegaan, moet u
sudo apt-get install postgresql
. -
Zorg ervoor dat de psycopg2-bibliotheek in de afhankelijkheden van uw applicatie staat.
-
Configureer uw webapplicatie om verbinding te maken met de PostgreSQL-instance.
-
Maak modellen in uw ORM, ofwel met Django’s ingebouwde ORM of met SQLAlchemy met Flask.
-
Bouw uw databasetabellen of synchroniseer de ORM-modellen met de PostgreSQL-instance, als u een ORM gebruikt.
-
Start met het maken, lezen, bijwerken en verwijderen van gegevens in de databank vanuit uw webtoepassing.