Databáze SQL ukládají kolekce dat v řádcích a sloupcích. Data můžete načíst a aktualizovat v systému správy relačních databází (RDBMS) pomocí jazyka SQL. Z mnoha dostupných databází SQL jsou nejoblíbenější MySQL, PostgreSQL, Microsoft SQL Server a SQLite.

Funkce pro interakci s databázemi v Go je v balíčku database/sql, který je součástí standardní knihovny.

Balíček database/sql spolupracuje s databázemi SQL pomocí ovladačů. Můžete importovat vhodný balíček ovladače pro váš RDBMS a použít jej k interakci s databází.

Začínáme s databázemi SQL v Go

Balíček database/sql je obecným rozhraním pro relační databáze. Chcete-li pracovat s konkrétním databázovým serverem, budete muset použít jeden z mnoha dostupných ovladačů.

Naštěstí se nemusíte starat o konkrétní implementace kromě ovladače. Balíček database/sql zpracovává databázové operace nezávisle na serveru, ke kterému se připojujete.

Některé z nejpopulárnějších ovladačů databáze Go jsou:

  • Ovladač Go-SQL (MySQL)
  • PQ (PostgreSQL)
  • Přejít-SQLite3 (SQLite)
  • MSSQL DB (Microsoft SQL Server)
instagram viewer

Můžete použít Seznam ovladačů LibHunt najít ekvivalenty pro jiné typy databází. Seznam také ukazuje relativní popularitu každého databázového systému:

Instalace a import ovladačů databáze Go

Jakmile vytvoříte pracovní prostor Go a inicializujete soubor modulů Go, nainstalujte ovladač, který odpovídá vašemu databázovému systému. Chcete-li například nainstalovat ovladač MySQL nebo SQLite, spusťte v adresáři pracovního prostoru jeden z následujících příkazů:

přejděte na get -u github.com/go-sql-driver/mysql
přejděte na github.com/mattn/go-sqlite3

Po instalaci ovladače jej importujte kvůli vedlejším účinkům přidáním podtržítka před balíček. Chcete-li například importovat ovladač MySQL spolu s balíčkem databáze/sql:

import (
"databáze/sql"
_ "github.com/jít-sql-ovladač/mysql"
)

Importováním balíčku ovladače pro vedlejší účinky jej můžete použít k připojení k databázi a provádění operací s ní.

Připojení k databázi SQL pomocí Go

Po importu databázových ovladačů můžete vytvořit připojení k databázi pomocí OTEVŘENO metoda databáze/sql balík. Tato metoda převezme jméno a cestu ovladače k ​​databázi (pro SQLite) nebo připojovací řetězec (pro MySQL). Použijte například některou z následujících možností:

db, chyba := sql. Open("sqlite3", "models/testdb.db") // SQLite

db, chyba := sql. Open("mysql", "user: password@/dbname") // MySQL

Jakmile se pokusíte otevřít připojení, nezapomeňte zkontrolovat, zda nedošlo k chybě:

-li chyba!= nula {
log. Fatalln (chyba)
}

V závislosti na vašem databázovém systému, OTEVŘENO metoda může vrátit chybu, pokud databáze neexistuje. Jakmile se připojíte k databázi, můžete spouštět dotazy a připravovat příkazy pomocí instance databáze, která OTEVŘENO se vrací.

Provádění SQL příkazů

Můžeš provádět SQL příkazy za použití Připravit metoda instance vaší databáze. The Připravit metoda převezme příkaz SQL a vrátí připravený příkaz k provedení spolu s chybovým objektem. Pokud například chcete vytvořit novou tabulku:

příkaz, err := db. Připravit("VYTVOŘIT TABULKU, POKUD NEEXISTUJE přihlášení (uživatelské jméno TEXT, heslo TEXT)")

Výše uvedený příkaz vytvoří tabulku s názvem přihlásit se, pokud již neexistuje. Nová tabulka má pole pojmenovaná uživatelské jméno a Heslo, každý typ TEXT.

Pokud do svých dotazů vkládáte hodnoty z vašeho programu, můžete použít zápis otazníku (?) k označení zástupných symbolů a poté předat parametry při provádění příkazu.

příkaz, err := db. Připravte ("INSERT INTO login (username, password) values(?,?)")

Jakmile vytvoříte připravený příkaz, můžete jej provést pomocí jeho Exec metoda. Tato metoda vám umožňuje předat hodnoty parametrů z vašeho programu:

exec, err := příkaz. Exec (hodnota1, hodnota2)

-li chyba!= nula {
vrátit se
}

První hodnota, která Exec() returns je výsledkem dotazu SQL ve vaší databázi. Pomocí tohoto výsledku dotazu můžete zkontrolovat počet ovlivněných řádků nebo poslední vložené ID:

postižený, chyba := exec. RowsAffected()

-li chyba!= nula {
vrátit se
}

fmt. Println (ovlivněno)

id, chyba := exec. LastInsertId()

-li chyba!= nula {
vrátit se
}

fmt. Println (id)

Načítání výsledků dotazu

Balíček database/sql vám umožňuje dotazovat se na výsledky databáze pomocí Dotaz metoda instance databáze:

řádky, chyba := db. Dotaz ("SELECT * FROM User")

-li chyba!= nula {
vrátit se
}

The Dotaz metoda vrací a Řádky struct, kterou můžete použít k práci se sadou výsledků. Můžete například použít další metoda vaší instance řádků, abyste ji mohli iterovat a pracovat s jednotlivými řádky:

var uživatelské jméno heslo tětiva

pro řádky. Další() {
chyba := řádky. Skenovat(&uživatelské jméno, &heslo)

-li chyba!= nula {
log. Fatalln (chyba)
}

fmt. Println (uživatelské jméno, heslo)
}

Ve výše uvedeném příkladu dvě řetězcové proměnné –uživatelské jméno a Heslo—představuje hodnotu každého sloupce. The Skenovat metoda dekóduje aktuální řádek na tyto odpovídající proměnné.

SQL databáze se vždy hodí

Použití databází v Go je s balíčkem database/sql přímočaré. Můžete jej snadno použít k dotazování a provádění příkazů SQL v Go.

Databáze SQL jsou jádrem mnoha aplikací, zejména těch, které se zabývají velkými nebo komplexními datovými sadami. Databáze, jako je in-memory databáze SQLite, můžete použít pro své jednoduché projekty, jako je web scraping a vytváření robotů.

Správná znalost SQL a systémů správy databází je nezbytná pro jejich efektivní využití ve vašich programech. Pokud se však rozhodnete neučit se SQL, můžete se naučit, jak používat ORM k interakci s databázemi SQL v Go.