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)
instagram viewer

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.