En database er en abstraktion over et driftssystems filsystem, som gør det lettere for udviklere at bygge applikationer, der opretter, læser, opdaterer og sletter vedvarende data.

Hvorfor er databaser nødvendige?

På et højt niveau lagrer webapplikationer data og præsenterer dem for brugerne på en hensigtsmæssig måde. Google gemmer f.eks. data om veje og giver vejledninger til at komme fra et sted til et andet ved at køre gennem programmetMaps. Kørselsvejledning er mulig, fordi dataene er lagret i et struktureret format.

Databaser gør struktureret lagring pålidelig og hurtig. De giver dig også enmental ramme for, hvordan dataene skal gemmes og hentes i stedet for at skulle finde ud af, hvad du skal gøre med dataene, hver gang du bygger en nyapplikation.

Databaser er et koncept med mange implementeringer, herunder PostgreSQL, MySQL og SQLite. Der findes også ikke-relationelle databaser kaldet NoSQL-databaser. Få mere at vide i kapitlet om data, eller se indholdsfortegnelsen for alle emner.

Relationelle databaser

Den databaseopbevaringsabstraktion, der oftest anvendes i Python-webudvikling,er sæt af relationelle tabeller. Alternative abstraktioner for lagring forklares på NoSQL-siden.

Relationelle databaser gemmer data i en række tabeller. Forbindelser mellem tabellerne er angivet som fremmednøgler. En fremmednøgle er en unik reference fra en række i en relationel tabel til en anden række i en tabel, som kan være den samme tabel, men som oftest er en anden tabel.

Databasers lagringsimplementationer varierer i kompleksitet. SQLite, en database, der er inkluderet i Python, opretter en enkelt fil til alle data pr. database.Andre databaser som PostgreSQL, MySQL, Oracle og Microsoft SQL Server har mere komplicerede persistensordninger og tilbyder samtidig yderligere avancerede funktioner, som er nyttige til lagring af data i webapplikationer. Disse avancerede funktioner omfatter, men er ikke begrænset til følgende:

  1. datareplikering mellem en masterdatabase og en eller flere skrivebeskyttede slaveinstanser
  2. avancerede kolonnetyper, der effektivt kan lagre semistrukturerede data som f.eks. JavaScript Object Notation (JSON)
  3. sharding, som muliggør horisontal skalering af flere databaser, der hver især fungerer som læse-skrive-instanser på bekostning af latens i datakonsistens
  4. overvågning, statistik og andre nyttige runtime-informationer for databaseskemaer og tabeller

Typisk starter webapplikationer med en enkelt databaseinstans som PostgreSQL med et simpelt skema. Med tiden udvikler databaseskemaet sig til en mere kompleks struktur ved hjælp af skemamigrationer, og avancerede funktioner som replikering, sharding og overvågning bliver mere nyttige, efterhånden som databaseudnyttelsen øges baseret på applikationsbrugernes behov.

De mest almindelige databaser til Python-webapplikationer

PostgreSQL ogMySQL er to af de mest almindelige open source-databaser til lagring af Python-webapplikationers data.

SQLite er en database, der er gemt i en enkelt fil på disken. SQLite er indbygget i Python, men er kun bygget til adgang med en enkelt forbindelse ad gangen. Derfor anbefales det stærkt ikke at køre en produktionswebapplikation med SQLite.

PostgreSQL-database

PostgreSQL er den anbefalede relationelle database til at arbejde med Pythonwebapplikationer. PostgreSQL’s funktionssæt, aktive udvikling og stabilitet bidrager til dens anvendelse som backend for millioner af applikationer, der lever på nettet i dag.

Lær mere om brug af PostgreSQL med Python på sidenPostgreSQL.

MySQL-database

MySQL er en anden levedygtig open source-databaseimplementering til Python-applikationer. MySQL har en lidt nemmere indledende indlæringskurve endPostgreSQL , men er ikke så funktionsrig.

Find ud af mere om Python-applikationer med en MySQL-baggrund på den dedikeredeMySQL -side.

Forbindelse til en database med Python

For at arbejde med en relationel database ved hjælp af Python skal du bruge et kodelibrary. De mest almindelige biblioteker til relationelle databaser er:

  • psycopg2(kildekode)for PostgreSQL.

  • MySQLdb(kildekode)for MySQL. Bemærk, at udviklingen af denne driver for det meste er fastfrosset, så det er klogt at evaluere alternative drivere, hvis du brugerMySQL som backend.

  • cx_Oracle forOracle Database (kildekode).Oracle flyttede deresopen-kildedriverkode fra SourceForge til GitHub i 2017.

SQLite-understøttelse er indbygget i Python 2.7+, og derfor er et separat bibliotek ikke nødvendigt. Du skal blot “importere sqlite3” for at begynde at få grænseflade med den enkelt filbaserede database.

Objekt-relationel mapping

Objekt-relationelle mappere (ORM’er) giver udviklere mulighed for at få adgang til data fra abackend ved at skrive Python-kode i stedet for SQL-forespørgsler. Hver webapplikationsramme håndterer integration af ORM’er forskelligt. Der er en hel side om objekt-relationel mapping(ORM’er), som du bør læse for at få styr på dette emne.

Database tredjepartstjenester

En lang række virksomheder driver skalerbare databaseservere som en hosted service.Hostede databaser kan ofte give automatiserede sikkerhedskopier og genoprettelse, skærpede sikkerhedskonfigurationer og nem vertikal skalering, afhængigt af udbyderen.

  • Amazon Relational Database Service (RDS) tilbyder forudkonfigurerede MySQL- og PostgreSQL-instanser. Instanserne kan skaleres til større eller mindre konfigurationer baseret på lager- og ydelsesbehov.

  • Google Cloud SQL er en tjeneste med administrerede, sikkerhedskopierede, replikerede og automatisk patcherede MySQL-instanser. CloudSQL integreres med Google App Engine, men kan også bruges uafhængigt.

  • BitCan tilbyder både MySQL- og MongoDB-hosteddatabaser med omfattende backup-tjenester.

  • ElephantSQL er et software-as-a-service-firma, der hoster PostgreSQL-databaser og håndterer serverkonfiguration, backups og dataforbindelser oven på Amazon Web Services-instanser.

SQL-ressourcer

Du planlægger måske at bruge en objekt-relationel mapper (ORM) som din vigtigste måde at interagere med en database på, men du bør stadig lære det grundlæggende i SQL for at oprette skemaer og forstå den SQL-kode, der genereres af ORM’en. De følgende ressourcer kan hjælpe dig med at komme i gang med SQL, hvis du aldrig tidligere har brugt det.

  • Select Star SQL er en interaktiv bog til at lære SQL. Det kan stærkt anbefales, selv om du mener, at du kun vil arbejde med en objekt-relationel mapper i dine projekter, fordi du aldrig ved, hvornår du får brug for at gå ind i SQL for at forbedre en genereret forespørgsels langsomme ydeevne.

  • En begynderguide til SQL gør et godt stykke arbejde med at forklare de vigtigste nøgleord, der bruges i SQL-statementssom SELECT, WHERE, FROM, UPDATE og DELETE.

  • SQL Tutorial underviser i de grundlæggende SQL-principper, der kan anvendes i alle større implementeringer af relationelle databaser.

  • Life of a SQL queryeforklarer, hvad der sker både begrebsmæssigt og teknisk i en database, når en SQL-forespørgsel køres. Forfatteren brugerPostgreSQL som eksempeldatabase og SQL-syntaksen i hele indlægget.

  • En formentlig ufuldstændig, omfattende guide til de mange forskellige måder at JOIN-tabeller i SQLpå uddyber en af de vanskeligste dele af at skrive SQL-angivelser, der bygger bro mellem en eller flere tabeller: JOIN.

  • Skriv bedre SQLer en kort vejledning i kodestyling, der gør dine forespørgsler lettere at læse.

  • SQL Intermediate er en tutorial, der går ud over det grundlæggende, og som bruger åbne data fraUS Consumer Financial Protection Bureausom eksempler på optælling, forespørgsler og brug af views i PostgreSQL.

Generelle databaseresurser

  • Hvordan fungerer en relationel database?er et detaljeret indlæg i lang form om sortering, søgning, sammenlægning og andre operationer, som vi ofte tager for givet, når vi bruger en etableret relationel database som PostgreSQL.

  • Databaser 101 giver en god oversigt over de vigtigste koncepter for relationelle databaser, som er relevant for selv ikke-udviklere som introduktion.

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

  • DB-Engines rangerer de mest populære databasestyringssystemer.

  • DB Weekly er en ugentlig samling af generelle databaseartikler og ressourcer.

  • Designing Highly Scalable Database Architecturesdækker horisontal og vertikal skalering, replikering og caching i relationelle databasearkitekturer.

  • Online migrations at scaleer en god læsning om at nedbryde kompleksiteten af en databaseskemamigrering for en operationel database. Den tilgang, som forfatterens team brugte, var et 4-trins dobbelt skrivemønster til omhyggeligt at udvikle den måde, hvorpå data til abonnementer blev lagret, så de kunne flytte til en ny, mere effektiv lagringsmodel.

  • A one size fits all database doesn’t fit anyoneforklarer Amazon Web Services’ specifikke rationale for at have så mange typer relationelle og ikke-relationelle databaser på sin platform, men artiklen er også en god oversigt over forskellige databasemodeller og deres brugssituationer.

  • SQL er 43 år gammelt – her er 8 grunde til, at vi stadig bruger det i dagLister over, hvorfor SQL er almindeligt anvendt af næsten alle udviklere, selv om sproget nærmer sig sit halvtredsårs jubilæum.

  • SQL-nøgler i dybdengiver en god forklaring på, hvad primære nøgler er, og hvordan du bør bruge dem.

  • Udforskning af et datasæt i SQLer et godt eksempel på, hvordan SQL alene kan bruges til dataanalyse. Denne tutorial bruger Spotify-data til at vise, hvordan man uddrager det, man søger at lære af et datasæt.

  • Databaser integrationsteststrategierdækker et vanskeligt emne, der dukker op i alle virkelige projekter.

  • GitLab leverede deres postmortem af en databaseafbrydelse den 31. januar som en måde at være gennemsigtig over for kunderne og hjælpe andre udviklingsteams med at lære, hvordan de ødelagde deres databasesystemer og derefter fandt en måde at komme sig på.

  • Asynkron Python og databaserer en dybdegående artikel, der dækker, hvorfor mange Python-databasedrivere ikke kan bruges uden modifikation på grund af forskellene i blokering versus asynkrone hændelsesmodeller. Absolut værd at læse, hvis du brugerWebSockets via Tornado eller gevent.

  • PostgreSQL vs. MS SQL Server er etperspektiv på forskellene mellem de to databaseservere fra en dataanalytiker.

Databaser læringstjekliste

  1. Installer PostgreSQL på din server. Antager, at du gik med Ubuntu runsudo apt-get install postgresql.

  2. Sørg for, at psycopg2-biblioteket er i din applikations afhængigheder.

  3. Konfigurer din webapplikation til at oprette forbindelse til PostgreSQL-instansen.

  4. Opret modeller i din ORM, enten med Djangos indbyggede ORM ellerSQLAlchemy med Flask.

  5. Opbyg dine databasetabeller eller synkroniser ORM-modellerne med PostgreSQL-instansen, hvis du bruger en ORM.

  6. Begynd at oprette, læse, opdatere og slette data i databasen fra din webapplikation.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.