Bazele de date SQL stochează colecții de date în rânduri și coloane. Puteți prelua și actualiza datele într-un sistem de management al bazelor de date relaționale (RDBMS) folosind limbajul SQL. Dintre numeroasele baze de date SQL disponibile, cele mai populare sunt MySQL, PostgreSQL, Microsoft SQL Server și SQLite.
Funcționalitatea pentru interacțiunea cu bazele de date în Go se află în pachetul baze de date/sql, parte a bibliotecii standard.
Pachetul bază de date/sql interacționează cu bazele de date SQL folosind drivere. Puteți importa un pachet de driver adecvat pentru RDBMS și îl puteți utiliza pentru a interacționa cu baza de date.
Noțiuni introductive cu bazele de date SQL în Go
Pachetul bază de date/sql este o interfață generică pentru bazele de date relaționale. Pentru a lucra cu un anumit server de baze de date, va trebui să utilizați unul dintre numeroasele drivere disponibile.
Din fericire, nu trebuie să vă faceți griji cu privire la implementări specifice dincolo de driver. Pachetul baza de date/sql gestionează operațiunile bazei de date independent de serverul la care vă conectați.
Unele dintre cele mai populare drivere pentru baze de date Go sunt:
- Driver Go-SQL (MySQL)
- PQ (PostgreSQL)
- Go-SQLite3 (SQLite)
- MSSQL DB (Microsoft SQL Server)
Puteți folosi Lista de drivere LibHunt pentru a găsi echivalente pentru alte tipuri de baze de date. Lista arată, de asemenea, popularitatea relativă a fiecărui sistem de baze de date:
Instalarea și importarea driverelor pentru baze de date Go
Odată ce ați creat un spațiu de lucru Go și ați inițializat un fișier de module Go, instalați driverul care se potrivește cu sistemul dvs. de baze de date. De exemplu, rulați una dintre următoarele comenzi în directorul spațiului de lucru pentru a instala driverul MySQL sau SQLite:
du-te la -u github.com/go-sql-driver/mysql
du-te și obține github.com/mattn/go-sqlite3
După ce ați instalat driverul, importați-l pentru efecte secundare prefixând un caracter de subliniere înaintea pachetului. De exemplu, pentru a importa driverul MySQL împreună cu pachetul baza de date/sql:
import (
"baza de date/sql"
_ "github.com/merge-sql-driver/mysql"
)
Importând pachetul de driver pentru efecte secundare, îl puteți utiliza pentru a vă conecta la baza de date și a executa operațiuni pe aceasta.
Conectarea la o bază de date SQL cu Go
După importarea driverelor bazei de date, puteți crea o conexiune la baza de date folosind Deschis metoda de baza de date/sql pachet. Această metodă preia numele și calea driverului către baza de date (pentru SQLite) sau un șir de conexiune (pentru MySQL). De exemplu, utilizați oricare dintre următoarele:
db, err := sql. Deschide ("sqlite3", "models/testdb.db") // SQLite
db, err := sql. Deschide ("mysql", "utilizator: parolă@/dbname") // MySQL
După ce ați încercat să deschideți conexiunea, nu uitați să verificați dacă există o eroare:
dacă greseala != zero {
Buturuga. Fatalln (eră)
}
În funcție de sistemul dvs. de baze de date, Deschis metoda poate returna o eroare dacă baza de date nu există. Odată ce v-ați conectat la o bază de date, puteți executa interogări și puteți pregăti instrucțiuni folosind instanța bazei de date care Deschis se intoarce.
Executarea comenzilor SQL
Poti executa comenzi SQL folosind A pregati metoda instanței bazei de date. The A pregati metoda preia o comandă SQL și returnează o instrucțiune pregătită pentru execuție alături de un obiect de eroare. De exemplu, dacă doriți să creați un tabel nou:
comandă, err := db. Pregătiți ("CREATE TABLE IF NU EXISTS login (nume utilizator TEXT, parolă TEXT)")
Declarația de mai sus creează un tabel numit Autentificare, dacă nu există deja. Noul tabel are câmpuri numite nume de utilizator și parola, fiecare de tip TEXT.
Dacă inserați valori din programul dvs. în interogări, puteți utiliza notația semnului de întrebare (?) pentru a indica substituenți și apoi transmiteți parametrii la executarea instrucțiunii.
comandă, err := db. Pregătiți ("INSERT INTO login (nume de utilizator, parolă) valori(?,?)")
Odată ce ați creat o instrucțiune pregătită, o puteți executa folosind ea Exec metodă. Această metodă vă permite să transmiteți valorile parametrilor din programul dvs.:
exec, err := comandă. Exec (valoare1, valoare2)
dacă greseala != zero {
întoarcere
}
Prima valoare care Exec() returns este rezultatul interogării SQL din baza de date. Folosind acest rezultat al interogării, puteți verifica numărul de rânduri afectate sau ultimul ID inserat:
afectat, err := exec. RânduriAfectate()
dacă greseala != zero {
întoarcere
}fmt. Println (afectat)
id, err := exec. LastInsertId()
dacă greseala != zero {
întoarcere
}
fmt. Println (id)
Preluarea rezultatelor interogării
Pachetul bază de date/sql vă permite să interogați rezultatele bazei de date folosind Interogare metoda unei instanțe de bază de date:
rânduri, err := db. Interogare ("SELECT * FROM User")
dacă greseala != zero {
întoarcere
}
The Interogare metoda returnează a Rânduri struct pe care o puteți folosi pentru a lucra cu setul de rezultate. De exemplu, puteți utiliza Următorul metoda instanței dvs. de rânduri pentru a repeta peste ea și a lucra cu rânduri individuale:
var nume utilizator, parola şir
pentru rânduri. Următorul() {
err := rânduri. Scanare(&nume de utilizator, &parolă)dacă greseala != zero {
Buturuga. Fatalln (eră)
}
fmt. Println (nume de utilizator, parolă)
}
În exemplul de mai sus, două variabile șir—nume de utilizator și parola-reprezintă valoarea fiecărei coloane. The Scanează metoda decodifică rândul curent în acele variabile corespunzătoare.
Bazele de date SQL sunt întotdeauna utile
Utilizarea bazelor de date în Go este simplă cu pachetul database/sql. Îl puteți folosi pentru a interoga și a executa comenzi SQL în Go cu ușurință.
Bazele de date SQL se află în centrul multor aplicații, în special a celor care se ocupă cu seturi de date mari sau complexe. Puteți utiliza baze de date precum baza de date SQLite în memorie pentru proiectele dvs. simple, cum ar fi web scraping și construirea de roboți.
Cunoașterea corespunzătoare a SQL și a sistemelor de gestionare a bazelor de date este esențială pentru a le utiliza eficient în programele dumneavoastră. Cu toate acestea, dacă alegeți să nu învățați SQL, puteți învăța cum să utilizați ORM-urile pentru a interacționa cu bazele de date SQL în Go.