SQL-databaser lagrer samlinger av data i rader og kolonner. Du kan hente og oppdatere dataene i et relasjonsdatabasestyringssystem (RDBMS) ved å bruke SQL-språket. Av de mange tilgjengelige SQL-databasene er de mest populære MySQL, PostgreSQL, Microsoft SQL Server og SQLite.
Funksjonalitet for interaksjon med databaser i Go er i databasen/sql-pakken, en del av standardbiblioteket.
Databasen/sql-pakken samhandler med SQL-databaser ved hjelp av drivere. Du kan importere en passende driverpakke for RDBMS og bruke den til å samhandle med databasen.
Komme i gang med SQL-databaser i farten
Databasen/sql-pakken er et generisk grensesnitt til relasjonsdatabaser. For å jobbe med en bestemt databaseserver, må du bruke en av de mange tilgjengelige driverne.
Heldigvis trenger du ikke å bekymre deg for spesifikke implementeringer utover driveren. Databasen/sql-pakken håndterer databaseoperasjoner uavhengig av serveren du kobler til.
Noen av de mest populære Go-databasedriverne er:
- Go-SQL-driver (MySQL)
- PQ (PostgreSQL)
- Go-SQLite3 (SQLite)
- MSSQL DB (Microsoft SQL Server)
Du kan bruke LibHunt-driverliste å finne ekvivalenter for andre databasetyper. Listen viser også den relative populariteten til hvert databasesystem:
Installere og importere Go Database-drivere
Når du har opprettet et Go-arbeidsområde og initialisert en Go-modulfil, installer driveren som samsvarer med databasesystemet ditt. Kjør for eksempel en av følgende kommandoer i arbeidsområdekatalogen for å installere MySQL- eller SQLite-driveren:
gå til -u github.com/go-sql-driver/mysql
gå til github.com/mattn/go-sqlite3
Etter at du har installert driveren, importerer du den for bivirkninger ved å sette et understrek foran pakken. For eksempel, for å importere MySQL-driveren ved siden av databasen/sql-pakken:
import (
"database/sql"
_ "github.com/gå-sql-driver/mysql"
)
Ved å importere driverpakken for bivirkninger, kan du bruke den til å koble til og utføre operasjoner på databasen.
Koble til en SQL-database med Go
Etter å ha importert databasedriverne, kan du opprette en databasetilkobling ved å bruke Åpen metoden for database/sql pakke. Denne metoden tar driverens navn og bane til databasen (for SQLite) eller en tilkoblingsstreng (for MySQL). Bruk for eksempel ett av følgende:
db, feil := sql. Open("sqlite3", "models/testdb.db") // SQLite
db, feil := sql. Open("mysql", "bruker: passord@/dbnavn") // MySQL
Når du har forsøkt å åpne tilkoblingen, husk å se etter en feil:
hvis feil != null {
Logg. Fatalln (feil)
}
Avhengig av databasesystemet ditt, vil Åpen metoden kan returnere en feil hvis databasen ikke eksisterer. Når du har koblet til en database, kan du utføre spørringer og forberede setninger ved å bruke databaseforekomsten som Åpen returnerer.
Utføre SQL-kommandoer
Du kan utfør SQL-kommandoer bruker Forberede metoden for databaseforekomsten. De Forberede metoden tar inn en SQL-kommando og returnerer en forberedt setning for kjøring ved siden av et feilobjekt. Hvis du for eksempel vil opprette en ny tabell:
kommando, feil := db. Prepare("CREATE TABLE IF NOT EXISTS login (brukernavn TEXT, passord TEXT)")
Utsagnet ovenfor oppretter en tabell med navn Logg Inn, hvis den ikke allerede eksisterer. Den nye tabellen har felt navngitt brukernavn og passord, hver av typen TEKST.
Hvis du setter inn verdier fra programmet i spørringene dine, kan du bruke spørsmålstegn (?) for å angi plassholdere og deretter sende parametrene for å utføre setningen.
kommando, feil := db. Prepare("INSERT INTO login (brukernavn, passord) verdier(?,?)")
Når du har laget en forberedt uttalelse, kan du utføre den ved å bruke dens Exec metode. Denne metoden lar deg sende parameterverdier fra programmet ditt:
exec, err := kommando. Exec (verdi1, verdi2)
hvis feil != null {
komme tilbake
}
Den første verdien som Exec() returnerer er resultatet av SQL-spørringen på databasen din. Ved å bruke dette søkeresultatet kan du se etter antall berørte rader eller sist innsatte ID:
berørt, feil := exec. RowsAffected()
hvis feil != null {
komme tilbake
}fmt. Println (berørt)
id, feil := exec. LastInsertId()
hvis feil != null {
komme tilbake
}
fmt. Println (id)
Henter søkeresultater
Databasen/sql-pakken lar deg søke etter databaseresultater ved hjelp av Spørsmål metode for en databaseforekomst:
rader, feil := db. Query ("VELG * FRA bruker")
hvis feil != null {
komme tilbake
}
De Spørsmål metoden returnerer en Rader struktur som du kan bruke til å jobbe med resultatsettet ditt. Du kan for eksempel bruke Neste metode for radforekomsten din for å iterere over den og jobbe med individuelle rader:
var brukernavn passord streng
til rader. Neste() {
feil := rader. Skann(&brukernavn, &passord)hvis feil != null {
Logg. Fatalln (feil)
}
fmt. Println (brukernavn, passord)
}
I eksemplet ovenfor, to strengvariabler—brukernavn og passord– representere hver kolonneverdi. De Skann metoden dekoder gjeldende rad til de tilsvarende variablene.
SQL-databaser kommer alltid til nytte
Å bruke databaser i Go er enkelt med database/sql-pakken. Du kan bruke den til å spørre og utføre SQL-kommandoer i Go med letthet.
SQL-databaser er kjernen i mange applikasjoner, spesielt de som omhandler store eller komplekse datasett. Du kan bruke databaser som SQLite-databasen i minnet for dine enkle prosjekter som nettskraping og bygging av roboter.
Riktig kunnskap om SQL og databasestyringssystemer er avgjørende for å bruke dem effektivt i programmene dine. Men hvis du velger å ikke lære SQL, kan du lære hvordan du bruker ORM-er til å samhandle med SQL-databaser i Go.