Доступ к базам данных на GO
НАВИГАЦИЯ ПО СТРАНИЦЕ
GO предоставляет богатые возможности для работы с различными типами баз данных, будь то SQL или NoSQL.
Подключение и использование баз данных в GO
Для работы с базами данных в GO часто используется стандартный пакет database/sql. Прежде всего, необходимо подключить драйвер для конкретной базы данных. Например, для работы с PostgreSQL, мы можем использовать драйвер pq.
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/lib/pq"
)
func main() {
db, err := sql.Open("postgres", "user=username password=password dbname=mydb sslmode=disable")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Взаимодействие с базой данных...
}
В этом примере мы подключаемся к PostgreSQL базе данных с использованием драйвера pq. Затем мы можем выполнять SQL-запросы и обрабатывать результаты.
Работа с SQL базами данных
GO предоставляет удобные средства для работы с SQL базами данных. Рассмотрим пример работы с простой таблицей:
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/lib/pq"
)
func main() {
db, err := sql.Open("postgres", "user=username password=password dbname=mydb sslmode=disable")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Создание таблицы
_, err = db.Exec(`
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL
)
`)
if err != nil {
log.Fatal(err)
}
// Вставка данных
_, err = db.Exec("INSERT INTO users (username, email) VALUES ($1, $2)", "john_doe", "john@example.com")
if err != nil {
log.Fatal(err)
}
// Выборка данных
rows, err := db.Query("SELECT * FROM users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id int
var username, email string
err := rows.Scan(&id, &username, &email)
if err != nil {
log.Fatal(err)
}
fmt.Printf("ID: %d, Username: %s, Email: %s\n", id, username, email)
}
}
Этот пример создает таблицу пользователей, вставляет данные и затем выполняет запрос для выборки всех пользователей.
Работа с NoSQL базами данных
Для работы с NoSQL базами данных, такими как MongoDB, GO предоставляет соответствующие драйверы. Рассмотрим пример работы с MongoDB:
package main
import (
"context"
"fmt"
"log"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
type Person struct {
Name string
Age int
Title string
}
func main() {
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
client, err := mongo.Connect(context.Background(), clientOptions)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(context.Background())
collection := client.Database("mydb").Collection("people")
// Вставка документа
person := Person{"Иван", 30, "Программист"}
_, err = collection.InsertOne(context.Background(), person)
if err != nil {
log.Fatal(err)
}
// Поиск документа
result := collection.FindOne(context.Background(), nil)
var foundPerson Person
err = result.Decode(&foundPerson)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Найденный человек: %+v\n", foundPerson)
}
В этом примере мы подключаемся к MongoDB, вставляем документ и затем выполняем запрос для поиска документа.
GO предоставляет разнообразные инструменты для удобной и эффективной работы с различными базами данных, позволяя разработчикам выбирать подходящее решение для своих задач.