SQL-databaser gemmer samlinger af data i rækker og kolonner. Du kan hente og opdatere dataene i et relationelt databasestyringssystem (RDBMS) ved hjælp af SQL-sproget. Af de mange tilgængelige SQL-databaser er de mest populære MySQL, PostgreSQL, Microsoft SQL Server og SQLite.

Funktionalitet til at interagere med databaser i Go er i databasen/sql-pakken, en del af standardbiblioteket.

Databasen/sql-pakken interagerer med SQL-databaser ved hjælp af drivere. Du kan importere en passende driverpakke til din RDBMS og bruge den til at interagere med databasen.

Kom godt i gang med SQL-databaser i Go

Databasen/sql-pakken er en generisk grænseflade til relationelle databaser. For at arbejde med en bestemt databaseserver skal du bruge en af ​​de mange tilgængelige drivere.

Heldigvis behøver du ikke bekymre dig om specifikke implementeringer ud over driveren. Databasen/sql-pakken håndterer databaseoperationer uafhængigt af den server, du opretter forbindelse til.

Nogle af de mest populære Go-databasedrivere er:

instagram viewer
  • Go-SQL-driver (MySQL)
  • PQ (PostgreSQL)
  • Go-SQLite3 (SQLite)
  • MSSQL DB (Microsoft SQL Server)

Du kan bruge LibHunt-driverliste at finde ækvivalenter til andre databasetyper. Listen viser også den relative popularitet af hvert databasesystem:

Installation og import af Go-databasedrivere

Når du har oprettet et Go-arbejdsområde og initialiseret en Go-modulfil, skal du installere den driver, der matcher dit databasesystem. Kør f.eks. en af ​​følgende kommandoer i dit arbejdsområdebibliotek for at installere MySQL- eller SQLite-driveren:

få -u github.com/go-sql-driver/mysql
gå til github.com/mattn/go-sqlite3

Når du har installeret din driver, skal du importere den for bivirkninger ved at sætte en understregning foran pakken. For eksempel, for at importere MySQL-driveren sammen med databasen/sql-pakken:

importere (
"database/sql"
_ "github.com/-sql-driver/mysql"
)

Ved at importere driverpakken for bivirkninger, kan du bruge den til at oprette forbindelse til og udføre operationer på databasen.

Opret forbindelse til en SQL-database med Go

Efter import af databasedriverne kan du oprette en databaseforbindelse ved hjælp af Åben metoden til database/sql pakke. Denne metode tager driverens navn og sti til databasen (for SQLite) eller en forbindelsesstreng (for MySQL). Brug f.eks. en af ​​følgende:

db, fejl := sql. Open("sqlite3", "models/testdb.db") // SQLite

db, fejl := sql. Åbn("mysql", "bruger: adgangskode@/dbnavn") // MySQL

Når du har forsøgt at åbne forbindelsen, skal du huske at tjekke for en fejl:

hvis fejl!= nul {
log. Fatalln (fejl)
}

Afhængigt af dit databasesystem vil Åben metoden kan returnere en fejl, hvis databasen ikke eksisterer. Når du har oprettet forbindelse til en database, kan du udføre forespørgsler og forberede sætninger ved hjælp af databaseforekomsten Åben vender tilbage.

Udførelse af SQL-kommandoer

Du kan udføre SQL-kommandoer bruger Forberede metoden for din databaseinstans. Det Forberede metoden tager en SQL-kommando ind og returnerer en forberedt sætning til udførelse sammen med et fejlobjekt. For eksempel, hvis du vil oprette en ny tabel:

kommando, fejl := db. Prepare("OPRET TABEL, HVIS IKKE FINDER login (brugernavn TEXT, password TEXT)")

Udsagnet ovenfor opretter en tabel med navnet Log på, hvis det ikke allerede eksisterer. Den nye tabel har navngivet felter brugernavn og adgangskode, hver af typen TEKST.

Hvis du indsætter værdier fra dit program i dine forespørgsler, kan du bruge spørgsmålstegn (?) til at angive pladsholdere og derefter videregive parametrene til udførelse af sætningen.

kommando, fejl := db. Prepare("INSERT INTO login (brugernavn, adgangskode) værdier(?,?)")

Når du har oprettet en forberedt erklæring, kan du udføre den ved hjælp af dens Exec metode. Denne metode lader dig sende parameterværdier fra dit program:

exec, err := kommando. Exec (værdi1, værdi2)

hvis fejl!= nul {
Vend tilbage
}

Den første værdi, der Exec() returnerer er resultatet af SQL-forespørgslen på din database. Ved at bruge dette forespørgselsresultat kan du kontrollere antallet af berørte rækker eller det sidst indsatte id:

berørt, fejl := exec. RowsAffected()

hvis fejl!= nul {
Vend tilbage
}

fmt. Println (påvirket)

id, fejl := exec. LastInsertId()

hvis fejl!= nul {
Vend tilbage
}

fmt. Println (id)

Henter forespørgselsresultater

Databasen/sql-pakken giver dig mulighed for at forespørge databaseresultater ved hjælp af Forespørgsel metode for en databaseinstans:

rækker, fejl := db. Forespørgsel ("VÆLG * FRA bruger")

hvis fejl!= nul {
Vend tilbage
}

Det Forespørgsel metode returnerer en Rækker struktur, som du kan bruge til at arbejde med dit resultatsæt. Du kan f.eks. bruge Næste metode for din rækkeforekomst til at iterere over den og arbejde med individuelle rækker:

var brugernavn Kodeord snor

til rækker. Næste() {
fejl := rækker. Scan (&brugernavn, &adgangskode)

hvis fejl!= nul {
log. Fatalln (fejl)
}

fmt. Println (brugernavn, adgangskode)
}

I eksemplet ovenfor er to strengvariabler—brugernavn og adgangskode— repræsentere hver kolonneværdi. Det Scan metode afkoder den aktuelle række til de tilsvarende variable.

SQL-databaser er altid praktisk

Brug af databaser i Go er ligetil med database/sql-pakken. Du kan bruge det til at forespørge og udføre SQL-kommandoer i Go med lethed.

SQL-databaser er kernen i mange applikationer, især dem, der beskæftiger sig med store eller komplekse datasæt. Du kan bruge databaser som SQLite-databasen i hukommelsen til dine simple projekter som web-skrabning og bygning af bots.

Korrekt kendskab til SQL og databasestyringssystemer er afgørende for at bruge dem effektivt i dine programmer. Men hvis du vælger ikke at lære SQL, kan du lære, hvordan du bruger ORM'er til at interagere med SQL-databaser i Go.