SQL databázy uchovávajú kolekcie údajov v riadkoch a stĺpcoch. Údaje môžete získať a aktualizovať v systéme riadenia relačnej databázy (RDBMS) pomocou jazyka SQL. Z mnohých dostupných databáz SQL sú najpopulárnejšie MySQL, PostgreSQL, Microsoft SQL Server a SQLite.
Funkcionalita pre interakciu s databázami v Go je v balíku database/sql, ktorý je súčasťou štandardnej knižnice.
Balík database/sql interaguje s databázami SQL pomocou ovládačov. Môžete importovať vhodný balík ovládačov pre váš RDBMS a použiť ho na interakciu s databázou.
Začíname s databázami SQL v aplikácii Go
Balík database/sql je všeobecné rozhranie pre relačné databázy. Ak chcete pracovať s konkrétnym databázovým serverom, budete musieť použiť jeden z mnohých dostupných ovládačov.
Našťastie sa nemusíte starať o konkrétne implementácie nad rámec ovládača. Balík database/sql spracováva databázové operácie nezávisle od servera, ku ktorému sa pripájate.
Niektoré z najpopulárnejších ovládačov databázy Go sú:
- Go-SQL ovládač (MySQL)
- PQ (PostgreSQL)
- Prejsť na SQLite3 (SQLite)
- MSSQL DB (Microsoft SQL Server)
Môžete použiť Zoznam ovládačov LibHunt nájsť ekvivalenty pre iné typy databáz. Zoznam tiež ukazuje relatívnu popularitu každého databázového systému:
Inštalácia a import ovládačov databázy Go
Po vytvorení pracovného priestoru Go a inicializácii súboru modulov Go nainštalujte ovládač, ktorý zodpovedá vášmu databázovému systému. Ak chcete nainštalovať ovládač MySQL alebo SQLite, spustite napríklad jeden z nasledujúcich príkazov v adresári pracovného priestoru:
prejdite na -u github.com/go-sql-driver/mysql
prejdite na stránku github.com/mattn/go-sqlite3
Po nainštalovaní ovládača ho importujte kvôli vedľajším účinkom vložením podčiarkovníka pred balík. Ak chcete napríklad importovať ovládač MySQL spolu s balíkom databázy/sql:
importovať (
"databáza/sql"
_ "github.com/ísť-sql-driver/mysql"
)
Importovaním balíka ovládačov pre vedľajšie účinky ho môžete použiť na pripojenie k databáze a vykonávanie operácií s ňou.
Pripojenie k databáze SQL pomocou aplikácie Go
Po importovaní databázových ovládačov môžete vytvoriť pripojenie k databáze pomocou OTVORENÉ metóda z databáza/sql balík. Táto metóda prevezme meno a cestu ovládača k databáze (pre SQLite) alebo pripojovací reťazec (pre MySQL). Použite napríklad niektorú z nasledujúcich možností:
db, chyba := sql. Open("sqlite3", "models/testdb.db") // SQLite
db, chyba := sql. Open("mysql", "user: password@/dbname") // MySQL
Keď sa pokúsite nadviazať spojenie, nezabudnite skontrolovať, či nedošlo k chybe:
ak chyba!= nula {
log. Fatalln (chyba)
}
V závislosti od vášho databázového systému, OTVORENÉ metóda môže vrátiť chybu, ak databáza neexistuje. Po pripojení k databáze môžete vykonávať dotazy a pripravovať príkazy pomocou inštancie databázy, ktorá OTVORENÉ sa vracia.
Vykonávanie príkazov SQL
Môžeš vykonávať príkazy SQL pomocou Pripravte sa metóda vašej inštancie databázy. The Pripravte sa metóda prevezme príkaz SQL a vráti pripravený príkaz na vykonanie spolu s chybovým objektom. Napríklad, ak chcete vytvoriť novú tabuľku:
príkaz, chyba := db. Pripravte("VYTVORTE TABUĽKU, AK NEEXISTUJE prihlásenie (text používateľa, heslo TEXT)")
Vyššie uvedené vyhlásenie vytvorí tabuľku s názvom Prihlásiť sa, ak ešte neexistuje. Nová tabuľka má polia pomenované užívateľské meno a heslo, každý typ TEXT.
Ak do dotazov vkladáte hodnoty z vášho programu, môžete použiť notáciu s otáznikom (?) na označenie zástupných symbolov a potom odovzdať parametre pri vykonávaní príkazu.
príkaz, chyba := db. Pripravte ("INSERT INTO login (username, password) values(?,?)")
Po vytvorení pripraveného príkazu ho môžete vykonať pomocou príkazu Exec metóda. Táto metóda vám umožňuje odovzdať hodnoty parametrov z vášho programu:
exec, err := príkaz. Exec (hodnota1, hodnota2)
ak chyba!= nula {
vrátiť
}
Prvá hodnota, ktorá Exec() returns je výsledkom SQL dotazu vo vašej databáze. Pomocou tohto výsledku dotazu môžete skontrolovať počet ovplyvnených riadkov alebo posledné vložené ID:
postihnutý, chyba := exec. RowsAffected()
ak chyba!= nula {
vrátiť
}fmt. Println (ovplyvnené)
id, chyba := exec. LastInsertId()
ak chyba!= nula {
vrátiť
}
fmt. Println (id)
Načítavanie výsledkov dotazu
Balík database/sql vám umožňuje vyhľadávať výsledky databázy pomocou Dopyt metóda inštancie databázy:
riadky, chyba := db. Dopyt ("VYBRAŤ * OD používateľa")
ak chyba!= nula {
vrátiť
}
The Dopyt metóda vracia a Riadky štruktúru, ktorú môžete použiť na prácu s vašou množinou výsledkov. Môžete napríklad použiť Ďalšie metóda vašej inštancie riadkov na iteráciu a prácu s jednotlivými riadkami:
var užívateľské meno, heslo reťazec
pre riadkov. Ďalšie() {
chyba := riadky. Skenovať (&používateľské meno, &heslo)ak chyba!= nula {
log. Fatalln (chyba)
}
fmt. Println (používateľské meno, heslo)
}
Vo vyššie uvedenom príklade sú dve premenné reťazca –užívateľské meno a heslo—predstavujú hodnotu každého stĺpca. The skenovať metóda dekóduje aktuálny riadok na príslušné premenné.
SQL databázy vždy prídu vhod
Používanie databáz v Go je s balíkom database/sql jednoduché. Môžete ho jednoducho použiť na dopytovanie a vykonávanie príkazov SQL v Go.
SQL databázy sú jadrom mnohých aplikácií, najmä tých, ktoré sa zaoberajú veľkými alebo zložitými množinami údajov. Databázy, ako je in-memory databáza SQLite, môžete použiť pre svoje jednoduché projekty, ako je zoškrabovanie webu a vytváranie robotov.
Správna znalosť SQL a systémov správy databáz je nevyhnutná na ich efektívne využitie vo vašich programoch. Ak sa však rozhodnete neučiť sa SQL, môžete sa naučiť, ako používať ORM na interakciu s databázami SQL v Go.