Det er vigtigt at vælge den rigtige database til din applikation, især for backend-programmer, der har direkte grænseflade til databasen. Der findes mange muligheder, som hver især er egnet til bestemte brugssituationer og med forskellige priser, hastigheder og skaleringsmuligheder.

Python bruges typisk i datatunge applikationer, fordi det har kraftfulde biblioteker til datamanipulation, så den database, du bruger til en Python-applikation, er vigtig.

I denne artikel sammenlignes MariaDB med andre databaseteknologier som MySQL og PostgreSQL og diskuteres, hvorfor det er et godt valg, når du bruger Python.

Hvad gør MariaDB så fantastisk til Python?

Takket være dets kraftfulde biblioteker til datamanipulation og maskinlæring er Python et populært programmeringssprog for dataudøvere – især inden for datateknik og datalogi. Begge områder beskæftiger sig med store datamængder, hvilket øger det nødvendige lagerpladsbehov og behovet for hukommelse og processorkraft.

Licensomkostningerne stiger ofte sammen med din datastørrelse, så det giver god mening at bruge en open source-database. Du kan også spare penge på hardware. Da du har fuld kontrol over, hvor applikationen skal implementeres, kan du finde de billigste løsninger i skyen eller on-premises.

Der findes mange open source-databaser, herunder relationelle databaser, NoSQL-databaser og grafdatabaser. Relationelle databaser er generelt gode til struktur og konsistens, mens NoSQL-databaser, som muliggør hurtig udvikling, er designet til at være mere fleksible.

Selv om Python fungerer helt fint med NoSQL-databaser, er relationelle databaser bedre egnet til analyse og databehandling i stor skala, som er almindelige anvendelser af Python.

Lad os sammenligne MariaDB med nogle andre populære open source-relationelle databaser.

MariaDB vs MySQL vs PostgreSQL

De mest populære open source-relationelle databaser er MariaDB, SQLite, MySQL og PostgreSQL. De har hver især et lignende sæt af tekniske kernefunktioner, men MariaDB har nogle unikke funktioner, som gør den bedst egnet til Python-applikationer.

Desuden er MariaDB open source, så dens funktioner er ikke afhængige af en ekstern enhed som MySQL, som Oracle nu ejer. Selv om open source-fællesskabet stadig kan foreslå og tilføje funktioner til MySQL, bestemmer Oracle (som har en konkurrerende database), hvor den skal hen.

På den anden side blev MariaDB oprettet efter Oracles overtagelse af MySQL for at fortsætte en fællesskabsstyret tilgang til udvikling. Som følge heraf har MariaDB et rigere funktionssæt, herunder flere lagringsmotorer, der sikrer bedre ydeevne for forespørgsler og replikering end MySQL. Denne forbedrede ydeevne er vigtig, når man arbejder med store datasæt.

Årsagerne til at bruge MariaDB frem for PostgreSQL er lidt mere nuancerede, da PostgreSQL også er fællesskabsdrevet. PostgreSQL bruger dog sin egen BSD-lignende licens, PostgreSQL-licensen, som er mere lempelig end MariaDB’s GNU-licens og giver brugerne mulighed for at lave udvidelser med lukket kildekode.

Selv om de er til gavn for den bruger, der opretter udvidelsen, bruges disse funktioner ikke altid i PostgreSQL-kernedatabasen, og udviklere kan endda kræve betaling for at bruge deres udvidelser. MariaDB og MySQL GNU-licenserne tillader ikke, at nye funktioner privatiseres – alle nye funktioner er frit tilgængelige.

MariaDB og PostgreSQL har de mest omfattende funktionssæt. MariaDB har dog nogle praktiske funktioner til en Python-backend. F.eks. bruger MariaDB ét sprog til at skabe grænseflade med alle sine forskellige lagringsmotorer – OLAP- og OLTP-systemer styres med den samme syntaks, hvilket reducerer byrden for udviklerne.

Din Python-backend kan skrive transaktionslignende data til MariaDB, som kan kopiere disse data til en lagringsmotor, der er mere egnet til analytiske forespørgsler. Udviklere kan skrive analytiske forespørgsler mod replikaen ved hjælp af den samme syntaks for at forbedre ydeevnen.

MariaDB introducerede også for nylig f-String-lignende formatering for strenge, svarende til Python. Dette sparer udviklere, der bruger MariaDB sammen med Python, for at skulle skifte mellem sprog.

MariaDB Python Connector

Før 2020 tilsluttede Python-programmører MariaDB via MySQL Python-pakken. Dette var muligt, fordi MariaDB er en fork af MySQL, men det betød, at MariaDB-forbindelser opførte sig på samme måde som MySQL.

I 2020 blev der frigivet en native MariaDB-connector for at fjerne afhængigheden af MySQL og give mere kontrol til MariaDB-fællesskabet. Du kan installere konnektoren med pip, Pythons pakkehåndteringsprogram, og bruge den til alle almindelige CRUD-brugstilfælde.

Alle statements styres via et cursor-objekt. Som standard accepterer MariaDB-cursoren forespørgsler som forberedte erklæringer, så du kan rense alle dynamiske dele af forespørgslen. Dette er mere sikkert end at formattere strenge til at opbygge forespørgsler, hvilket gør din applikation sårbar over for SQL-injektionsangreb.

Sådan fungerer Connector

Connectoren er enkel at bruge. Først importerer du MariaDB-connector-biblioteket til din applikation og bruger følgende funktion til at oprette forbindelse til din MariaDB-databaseserver:

import mariadb

try:
    connection = mariadb.connect(
        user=username,
        password=password,
        host=mariadb_host,
        port=3306,
        database="sales"

    )
except mariadb.Error as err:
    print(f"An error occurred whilst connecting to MariaDB: {err}")

Når der er oprettet forbindelse, udføres alle forespørgsler via et cursorobjekt. Du får cursor-objektet og bruger det derefter til at sende forespørgsler.

cursor = conn.cursor() 

Hvis du vil sende en forespørgsel som en forberedt erklæring, skal du bruge et spørgsmålstegn som en pladsholder i forespørgselsteksten og sende de krævede værdier som en tupel.

ur.execute( "SELECT * FROM sales WHERE sale_date >= ? and price > ?", (sale_date_val, price_val)) 

Indtastningsværdierne fra tuplen erstatter spørgsmålstegnene i rækkefølge fra venstre mod højre. Disse inputværdier er også renset for at forhindre SQL-injektion. Indbygget beskyttelse mod SQL-injektion er gavnlig for et sprog som Python, der er designet med begyndere programmører i tankerne.

Python og MariaDB til WordPress

En anden fordel ved at bruge MariaDB som backend for din Python-applikation er, at det er nemt at forbinde databasen til en WordPress-frontend, især når du bruger Kinsta.

Kinsta understøtter MariaDB som en backend-database, hvilket gør dem øjeblikkeligt kompatible. Dit WordPress-websted kan nemt få adgang til datasæt, der er behandlet i Python. Du kan f.eks. udføre nogle analyser i Python, gemme resultaterne i MariaDB og derefter vise dem som en graf på en WordPress-side.

Kinsta tilbyder også en udviklingsplatform kaldet DevKinsta til udvikling af en end-to-end-løsning. Med DevKinsta kan du bruge din lokale maskine til at oprette et WordPress-websted med en MariaDB-backend, som derefter kan skubbes til Kinsta, når det er klar til at gå live. Denne integration gør det nemt at opsætte et websted med en MariaDB-database – dit websted kan være live med få klik.

Oversigt

Flere open source-relationelle databaser, herunder MariaDB, MySQL og Postgres, kan fungere som Python-baggrund. MariaDB er dog den mest fleksible og funktionsrige mulighed takket være dens open source-natur.

Når der arbejdes med store datasæt, tilbyder MariaDB mange lagringsmotorer, hvilket gør den hurtigere end alternativerne, og den understøtter flere anvendelsesmuligheder, lige fra transaktionsbehandling til analytiske forespørgsler. Fleksibiliteten, hastigheden og den native Python-integration med MariaDB Python-connectoren gør den til et godt valg som backend for Python-applikationer, der behandler store datasæt.

Desuden kan MariaDB tilsluttes direkte til en WordPress-frontend, hvilket gør dine datasæt tilgængelige for dit websted. Kinsta’s MariaDB-understøttelse gør denne integration mere smidig. Med DevKinsta kan du konfigurere dit WordPress-websted til at bruge MariaDB på din lokale maskine, før du distribuerer løsningen via Kinsta.

Prøv vores databasehosting gratis nu.

Jeremy Holcombe Kinsta

Indholds- og marketingredaktør hos Kinsta, WordPress webudvikler og indholdsforfatter. Ud over alt WordPress nyder jeg stranden, golf og film. Jeg har også problemer med høje mennesker ;).