Доступ к базам данных на GO

НАВИГАЦИЯ ПО СТРАНИЦЕ

Подключение Работа с SQL Работа с NoSQL

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 предоставляет разнообразные инструменты для удобной и эффективной работы с различными базами данных, позволяя разработчикам выбирать подходящее решение для своих задач.