Bazy danych SQL przechowują kolekcje danych w wierszach i kolumnach. Możesz pobierać i aktualizować dane w systemie zarządzania relacyjnymi bazami danych (RDBMS) przy użyciu języka SQL. Spośród wielu dostępnych baz danych SQL najpopularniejsze to MySQL, PostgreSQL, Microsoft SQL Server i SQLite.
Funkcjonalność do interakcji z bazami danych w Go znajduje się w pakiecie database/sql, będącym częścią standardowej biblioteki.
Pakiet database/sql współdziała z bazami danych SQL za pomocą sterowników. Możesz zaimportować odpowiedni pakiet sterowników dla RDBMS i użyć go do interakcji z bazą danych.
Wprowadzenie do baz danych SQL w Go
Pakiet database/sql to ogólny interfejs do relacyjnych baz danych. Aby pracować z określonym serwerem bazy danych, musisz użyć jednego z wielu dostępnych sterowników.
Na szczęście nie musisz się martwić o konkretne implementacje poza sterownikiem. Pakiet database/sql obsługuje operacje bazy danych niezależnie od serwera, z którym się łączysz.
Niektóre z najpopularniejszych sterowników baz danych Go to:
- Sterownik Go-SQL (MySQL)
- PQ (PostgreSQL)
- Go-SQLite3 (SQLite)
- Baza danych MSSQL (Microsoft SQL Server)
Możesz użyć Lista sterowników LibHunt znaleźć odpowiedniki dla inne typy baz danych. Lista pokazuje również względną popularność każdego systemu baz danych:
Instalowanie i importowanie sterowników bazy danych Go
Po utworzeniu obszaru roboczego Go i zainicjowaniu pliku modułów Go zainstaluj sterownik zgodny z systemem bazy danych. Na przykład uruchom jedno z następujących poleceń w katalogu obszaru roboczego, aby zainstalować sterownik MySQL lub SQLite:
przejdź do pobrania -u github.com/go-sql-driver/mysql
wejdź na github.com/mattn/go-sqlite3
Po zainstalowaniu sterownika zaimportuj go pod kątem skutków ubocznych, dodając podkreślenie przed pakietem. Na przykład, aby zaimportować sterownik MySQL wraz z pakietem baza danych/sql:
import (
"baza danych/SQL"
_ „github.com/iść-sql-sterownik/mysql"
)
Importując pakiet sterowników w celu uzyskania efektów ubocznych, można go używać do łączenia się z bazą danych i wykonywania na niej operacji.
Łączenie się z bazą danych SQL za pomocą Go
Po zaimportowaniu sterowników bazy danych możesz utworzyć połączenie z bazą danych za pomocą otwarty metoda baza danych/sql pakiet. Ta metoda pobiera nazwę sterownika i ścieżkę do bazy danych (w przypadku SQLite) lub ciąg połączenia (w przypadku MySQL). Na przykład użyj jednego z następujących:
db, błąd := sql. Open("sqlite3", "models/testdb.db") // SQLite
db, błąd := sql. Open("mysql", "użytkownik: hasło@/nazwa bazy danych") // MySQL
Po próbie otwarcia połączenia pamiętaj o sprawdzeniu błędu:
jeśli błąd != zero {
dziennik. Śmiertelny (błąd)
}
W zależności od systemu bazy danych, otwarty metoda może zwrócić błąd, jeśli baza danych nie istnieje. Po połączeniu się z bazą danych możesz wykonywać zapytania i przygotowywać instrukcje za pomocą instancji bazy danych, która: otwarty zwroty.
Wykonywanie poleceń SQL
Możesz wykonuj polecenia SQL używając Przygotować metodę instancji bazy danych. The Przygotować Metoda przyjmuje polecenie SQL i zwraca przygotowaną instrukcję do wykonania wraz z obiektem błędu. Na przykład, jeśli chcesz utworzyć nową tabelę:
polecenie, błąd := db. Przygotuj("UTWÓRZ TABELĘ, JEŚLI NIE ISTNIEJE login (nazwa użytkownika TEKST, hasło TEKST)")
Powyższe oświadczenie tworzy tabelę o nazwie Zaloguj sie, jeśli jeszcze nie istnieje. Nowa tabela ma pola o nazwie Nazwa Użytkownika oraz hasło, każdy z typów TEKST.
Jeśli wstawiasz wartości z programu do zapytań, możesz użyć notacji ze znakiem zapytania (?), aby oznaczyć symbole zastępcze, a następnie przekazać parametry podczas wykonywania instrukcji.
polecenie, błąd := db. Przygotuj("INSERT INTO login (nazwa użytkownika, hasło) wartości(?,?)")
Po utworzeniu przygotowanej instrukcji możesz ją wykonać za pomocą jej Exec metoda. Ta metoda umożliwia przekazywanie wartości parametrów z programu:
exec, błąd := polecenie. Exec (wartość1, wartość2)
jeśli błąd != zero {
zwrócić
}
Pierwsza wartość, która Exec() zwraca to wynik zapytania SQL w Twojej bazie danych. Korzystając z tego wyniku zapytania, możesz sprawdzić liczbę wierszy, których dotyczy problem, lub ostatnio wstawiony identyfikator:
dotyczy, błąd := exec. Dotyczy wierszy()
jeśli błąd != zero {
zwrócić
}fmt. Println (dotknięty)
id, błąd := exec. Identyfikator ostatniego wstawienia()
jeśli błąd != zero {
zwrócić
}
fmt. Drukujln (identyfikator)
Pobieranie wyników zapytania
Pakiet database/sql umożliwia wyszukiwanie wyników bazy danych za pomocą Zapytanie metoda instancji bazy danych:
wiersze, błąd := db. Zapytanie("WYBIERZ * Z Użytkownika")
jeśli błąd != zero {
zwrócić
}
The Zapytanie metoda zwraca a Wydziwianie struktura, której możesz użyć do pracy z zestawem wyników. Na przykład możesz użyć Następny metodę instancji wierszy, aby wykonać iterację i pracować z poszczególnymi wierszami:
var Nazwa użytkownika Hasło strunowy
dla wydziwianie. Następny() {
błąd := wiersze. Skanuj(&nazwa użytkownika, &hasło)jeśli błąd != zero {
dziennik. Śmiertelny (błąd)
}
fmt. Println (nazwa użytkownika, hasło)
}
W powyższym przykładzie dwie zmienne łańcuchowe —Nazwa Użytkownika oraz hasło— reprezentuje wartość każdej kolumny. The Skanowanie Metoda dekoduje bieżący wiersz do odpowiednich zmiennych.
Bazy danych SQL zawsze się przydają
Korzystanie z baz danych w Go jest proste dzięki pakietowi database/sql. Możesz go z łatwością używać do wykonywania zapytań i wykonywania poleceń SQL w Go.
Bazy danych SQL są podstawą wielu aplikacji, zwłaszcza tych, które mają do czynienia z dużymi lub złożonymi zestawami danych. Możesz używać baz danych, takich jak baza danych SQLite w pamięci, do prostych projektów, takich jak web scraping i budowanie botów.
Odpowiednia znajomość SQL i systemów zarządzania bazami danych jest niezbędna do efektywnego wykorzystania ich w swoich programach. Jeśli jednak zdecydujesz się nie uczyć języka SQL, możesz dowiedzieć się, jak używać ORM do interakcji z bazami danych SQL w Go.