Det är viktigt att välja rätt databas för din applikation, särskilt när det gäller backend-applikationer som har ett direkt gränssnitt mot databasen. Det finns många alternativ, alla är lämpade för vissa användningsområden och har olika priser, hastigheter och skalnings-alternativ.

Python används vanligtvis i data-tunga applikationer eftersom det har kraftfulla bibliotek för datamanipulering. Som ett resultat så är den databas som du använder för en Python-applikation viktig.

I den här artikeln så jämförs MariaDB med andra databastekniker som MySQL och PostgreSQL och vi diskuterar varför det är ett bra val när du använder Python.

Vad gör MariaDB så bra för Python?

Python har kraftfulla bibliotek för datamanipulering och maskininlärning. Det är därför ett populärt programmeringsspråk för datapraktiker – särskilt inom datateknik och datavetenskap. Båda dessa områden hanterar stora mängder data. Som ett resultat så ökar lagringsbehovet och behoven av minne och processorkraft.

Licenskostnaderna ökar ofta i takt med datastorleken. Det är med andra ord vettigt att använda en databas med öppen källkod. Du kan dessutom spara pengar på hårdvara. Eftersom du har full kontroll över var applikationen ska installeras så kan du hitta de billigaste lösningarna i molnet eller på plats.

Det finns många databaser med öppen källkod, exempelvis relationella databaser, NoSQL-databaser och graf-databaser. Relationella databaser är generellt sett bra för struktur och konsistens. NoSQL-databaser, som möjliggör snabb utveckling, är istället utformade för att vara mer flexibla.

Python fungerar visserligen utmärkt med NoSQL-databaser. Relationella databaser är dock bättre lämpade för analys och storskalig databehandling som är vanliga användningsområden för Python.

Låt oss jämföra MariaDB med några andra populära relationella databaser med öppen källkod.

MariaDB vs MySQL vs PostgreSQL

De mest populära relationella databaserna med öppen källkod är MariaDB, SQLite, MySQL och PostgreSQL. Var och en har exempelvis en liknande uppsättning av tekniska kärnfunktioner. MariaDB har dock några unika funktioner som gör den bäst lämpad för Python-applikationer.

MariaDB har dessutom öppen källkod. Som ett resultat så är dess funktioner inte beroende av en extern enhet som MySQL, som Oracle numera äger. Även om öppen källkods-communityt fortfarande kan föreslå och lägga till funktioner till MySQL, så bestämmer Oracle (som har en konkurrerande databas) vart de ska ta vägen.

Å andra sidan så skapades MariaDB efter att Oracle köpte MySQL. Allt för en community-styrd strategi för utveckling. Som ett resultat av detta så har MariaDB en rikare funktionsuppsättning. Detta inkluderar exempelvis fler lagringsmotorer som säkerställer bättre prestanda för frågor och replikering än MySQL. Denna förbättrade prestanda är viktig när man arbetar med stora datamängder.

Skälen för att använda MariaDB framför PostgreSQL är lite mer nyanserade. PostgreSQL är nämligen också community-drivet. Denna relationella databas använder dock sin egen BSD-liknande licens, PostgreSQL-licensen. Den är exempelvis mer tillåtande än MariaDB’s GNU-licens och tillåter användare att skapa tillägg med sluten källkod.

Utvecklare kan ta betalt för sina tillägg

Även om de gynnar den användare som skapar tillägget så används dessa funktioner inte alltid i PostgreSQL’s huvud-databas. Utvecklare kan dessutom ta betalt för sina tillägg. MariaDB’s och MySQL GNU’s licens tillåter inte att nya funktioner privatiseras – all ny funktionalitet är fritt tillgänglig.

MariaDB och PostgreSQL har de rikaste funktionsuppsättningarna. MariaDB har dock några praktiska funktioner för en Python-backend. Denna relationella databas använder exempelvis ett språk för att skapa gränssnitt mot alla sina olika lagrings-motorer – OLAP- och OLTP-system styrs med samma syntax. Som ett resultat så minskar bördan för utvecklarna.

Din Python-backend kan skriva transaktions-liknande data till MariaDB. Databasen kan sedan kopiera dessa data till en lagrings-motor som är mer lämpad för analytiska frågor. Utvecklare kan skriva analytiska frågor mot replikan med samma syntax för bättre prestanda.

MariaDB införde dessutom nyligen f-String-liknande formatering för strängar, i likhet med Python. Som ett resultat så slipper utvecklare som använder MariaDB tillsammans med Python att byta språk mentalt.

MariaDB’s Python-anslutning

Före år 2020 så anslöt Python-programmerare till MariaDB via MySQL Python-paketet. Detta var möjligt eftersom MariaDB är en fork av MySQL. Det innebar dock även att MariaDB-anslutningar betedde sig på samma sätt som MySQL.

År 2020 så släpptes en inhemsk MariaDB-kontakt för att ta bort beroendet av MySQL och ge mer kontroll till MariaDB-communityt. Du kan installera anslutaren med pip, Python’s pakethanterare, och använda den för alla vanliga CRUD-användningsområden.

Alla uttalanden hanteras via ett cursor-objekt. Som standard så accepterar MariaDB-markören frågor som förberedda uttalanden. Som ett resultat så kan du sanera alla dynamiska delar av frågan. Detta är säkrare än att formatera strängar för att bygga upp frågor, vilket gör din applikation sårbar för SQL-injektionsattacker.

Hur kontakten fungerar

Anslutaren är enkel att använda. Först så importerar du biblioteket MariaDB connector till din applikation. Använd sedan följande funktion för att ansluta till din MariaDB-databasserver:

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 du är ansluten så utförs alla frågor via ett markör-objekt. Du får cursor-objektet och använder sedan detta för att skicka in frågor.

cursor = conn.cursor() 

Om du vill skicka en fråga som ett förberett uttalande så använder du ett frågetecken som en platshållare i frågetexten. Skicka sedan de nödvändiga värdena som en tupel.

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

Ingångsvärdena från tupeln ersätter frågetecknen i ordning från vänster till höger. Dessa inmatningsvärden är dessutom renodlade för att förhindra SQL-injektion. Inbyggt skydd mot SQL-injektion är fördelaktigt för ett språk som Python, som är utformat med nybörjar-programmerare i åtanke.

Python och MariaDB för WordPress

Det finns även en annan fördel med att använda MariaDB som backend för din Python-applikation. Anslutningen av databasen till WordPress-frontend går nämligen smidigt, särskilt när du använder Kinsta.

Kinsta stöder MariaDB som backend-databas. Som ett resultat så blir de omedelbart kompatibla. Din WordPress-webbplats kan enkelt få tillgång till datamängder som behandlas i Python. Du kan exempelvis utföra en viss analys i Python, lagra resultaten i MariaDB och sedan visa dem som ett diagram på en WordPress-sida.

Kinsta tillhandahåller dessutom en utvecklings-plattform som kallas DevKinsta för att utveckla en helhetslösning. Med DevKinsta så kan du använda din lokala maskin för att konfigurera en WordPress-webbplats med en MariaDB-bakgrund. Den kan sedan skickas till Kinsta när den är redo att tas i drift. Den här integreringen gör det enkelt att sätta upp en webbplats med en MariaDB-databas – din webbplats kan vara live med endast några få klick.

Sammanfattning

Flera relations-databaser med öppen källkod, inklusive MariaDB, MySQL och Postgres, kan fungera som en Python-backend. MariaDB är dock det mest flexibla och funktionsrika alternativet, tack vare dess karaktär av öppen källkod.

När man arbetar med stora datamängder så tillhandahåller MariaDB många lagringsmotorer. Som ett resultat så blir den snabbare än alternativen, och stöder flera användningsområden. Det kan handla om allt ifrån transaktions-behandling till analytiska frågor. Flexibiliteten, hastigheten och den inhemska Python-integreringen med MariaDB Python connector gör det till ett utmärkt val som backend för Python-applikationer som behandlar stora datamängder.

Dessutom kan MariaDB anslutas direkt till en WordPress-frontend. Dina datamängder blir därför tillgängliga på din webbplats. Kinsta’s MariaDB-stöd gör den här integreringen smidigare. Med DevKinsta så kan du konfigurera din WordPress-webbplats för att använda MariaDB på din lokala maskin innan du distribuerar lösningen via Kinsta.

Prova vår databashosting kostnadsfritt.

Jeremy Holcombe Kinsta

Content & Marketing Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems ;).