SQL-databases slaan gegevensverzamelingen op in rijen en kolommen. U kunt de gegevens ophalen en bijwerken in een relationeel databasebeheersysteem (RDBMS) met behulp van de SQL-taal. Van de vele beschikbare SQL-databases zijn MySQL, PostgreSQL, Microsoft SQL Server en SQLite de meest populaire.
Functionaliteit voor interactie met databases in Go zit in het database/sql-pakket, onderdeel van de standaardbibliotheek.
Het database/sql-pakket werkt samen met SQL-databases met behulp van stuurprogramma's. U kunt een geschikt stuurprogrammapakket voor uw RDBMS importeren en dit gebruiken voor interactie met de database.
Aan de slag met SQL-databases in Go
Het database/sql-pakket is een generieke interface voor relationele databases. Om met een specifieke databaseserver te werken, moet u een van de vele beschikbare stuurprogramma's gebruiken.
Gelukkig hoeft u zich geen zorgen te maken over specifieke implementaties buiten de driver. Het database/sql-pakket verwerkt databasebewerkingen onafhankelijk van de server waarmee u verbinding maakt.
Enkele van de meest populaire Go-databasestuurprogramma's zijn:
- Go-SQL-stuurprogramma (MySQL)
- PQ (PostgreSQL)
- Go-SQLite3 (SQLite)
- MSSQL-DB (Microsoft SQL-server)
U kunt de Lijst met LibHunt-stuurprogramma's om equivalenten te vinden voor andere databasetypes. De lijst toont ook de relatieve populariteit van elk databasesysteem:
Go-databasestuurprogramma's installeren en importeren
Nadat u een Go-werkruimte hebt gemaakt en een Go-modulebestand hebt geïnitialiseerd, installeert u het stuurprogramma dat overeenkomt met uw databasesysteem. Voer bijvoorbeeld een van de volgende opdrachten uit in uw werkruimtemap om het MySQL- of SQLite-stuurprogramma te installeren:
ga halen -u github.com/go-sql-driver/mysql
ga halen github.com/mattn/go-sqlite3
Nadat u uw stuurprogramma hebt geïnstalleerd, importeert u het voor bijwerkingen door een onderstrepingsteken voor het pakket te plaatsen. Om bijvoorbeeld het MySQL-stuurprogramma naast het database/sql-pakket te importeren:
importeren (
"database/sql"
_ "github.com/Gaan-sql-stuurprogramma/mysql"
)
Door het stuurprogrammapakket voor bijwerkingen te importeren, kunt u het gebruiken om verbinding te maken met en bewerkingen uit te voeren op de database.
Verbinding maken met een SQL-database met Go
Na het importeren van de databasestuurprogramma's kunt u een databaseverbinding maken met behulp van de Open methode van de database/sql pakket. Deze methode neemt de naam en het pad van het stuurprogramma naar de database (voor SQLite) of een verbindingsreeks (voor MySQL). Gebruik bijvoorbeeld een van de volgende opties:
db, fout := sql. Open("sqlite3", "modellen/testdb.db") // SQLite
db, fout := sql. Open("mysql", "gebruiker: wachtwoord@/dbnaam") // MySQL
Nadat u heeft geprobeerd de verbinding te openen, moet u niet vergeten te controleren op een fout:
als fout != nul {
logboek. Fataal (fout)
}
Afhankelijk van uw databasesysteem, Open methode kan een fout retourneren als de database niet bestaat. Nadat u verbinding hebt gemaakt met een database, kunt u query's uitvoeren en instructies voorbereiden met behulp van de database-instantie die: Open geeft terug.
SQL-opdrachten uitvoeren
Jij kan SQL-opdrachten uitvoeren de... gebruiken Bereiden methode van uw database-instantie. De Bereiden methode neemt een SQL-opdracht in en retourneert een voorbereide instructie voor uitvoering naast een foutobject. Als u bijvoorbeeld een nieuwe tabel wilt maken:
commando, fout := db. Prepare("CREER TABEL ALS NIET BESTAAN login (gebruikersnaam TEKST, wachtwoord TEKST)")
De bovenstaande verklaring maakt een tabel met de naam Log in, als het nog niet bestaat. De nieuwe tabel heeft velden met de naam gebruikersnaam en wachtwoord, elk van het type TEKST.
Als u waarden uit uw programma in uw query's invoegt, kunt u de notatie met vraagteken (?) gebruiken om tijdelijke aanduidingen aan te duiden en vervolgens de parameters doorgeven bij het uitvoeren van de instructie.
commando, fout := db. Prepare("INSERT INTO login (gebruikersnaam, wachtwoord) waarden(?,?)")
Nadat u een voorbereide instructie hebt gemaakt, kunt u deze uitvoeren met behulp van zijn directeur methode. Met deze methode kunt u parameterwaarden uit uw programma doorgeven:
exec, err := commando. Exec (waarde1, waarde2)
als fout != nul {
opbrengst
}
De eerste waarde die Exec() rendement is het resultaat van de SQL-query op uw database. Met behulp van dit zoekresultaat kunt u het aantal betrokken rijen of de laatst ingevoegde ID controleren:
getroffen, err := exec. RijenBeïnvloed()
als fout != nul {
opbrengst
}fmt. Println (betreft)
id, err := exec. LastInsertId()
als fout != nul {
opbrengst
}
fmt. Println (id)
Zoekresultaten ophalen
Met het database/sql-pakket kunt u databaseresultaten opvragen met behulp van de Vraag methode van een database-instantie:
rijen, err := db. Query ("SELECT * FROM gebruiker")
als fout != nul {
opbrengst
}
De Vraag methode retourneert a rijen struc die u kunt gebruiken om met uw resultatenset te werken. U kunt bijvoorbeeld de Volgende methode van uw rijeninstantie om eroverheen te itereren en met afzonderlijke rijen te werken:
var gebruikersnaam wachtwoord snaar
voor rijen. Volgende() {
err := rijen. Scan(&gebruikersnaam, &wachtwoord)als fout != nul {
logboek. Fataal (fout)
}
fmt. Println (gebruikersnaam, wachtwoord)
}
In het bovenstaande voorbeeld zijn er twee tekenreeksvariabelen:gebruikersnaam en wachtwoord— vertegenwoordig elke kolomwaarde. De Scannen methode decodeert de huidige rij in die corresponderende variabelen.
SQL-databases zijn altijd handig
Het gebruik van databases in Go is eenvoudig met het database/sql-pakket. U kunt het gebruiken om eenvoudig SQL-opdrachten in Go op te vragen en uit te voeren.
SQL-databases vormen de kern van veel applicaties, vooral die met grote of complexe datasets. U kunt databases zoals de in-memory SQLite-database gebruiken voor uw eenvoudige projecten zoals webscraping en het bouwen van bots.
Een goede kennis van SQL en databasebeheersystemen is essentieel om deze efficiënt in uw programma's te kunnen gebruiken. Als u er echter voor kiest geen SQL te leren, kunt u in Go leren hoe u ORM's kunt gebruiken voor interactie met SQL-databases.