go

پلتفرم Golang

(Golang Platform)

اتصال به دیتابیس‌ها

فهرست عناوین:

اتصال به دیتابیس MySQL و MariaDB

در ابتدا باید پکیج دیتابیس MySQL را نصب کنید. برای این کار دستور go get -u github.com/go-sql-driver/mysql را اجرا کنید‍. سپس برای اتصال به دیتابیس MySQL یا MariaDB کد زیر را در برنامه خود قرار دهید:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // connect to mysql
    db, err := sql.Open("mysql", "root:password@tcp(host:port)/database_name")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    // check if connection is ok
    err = db.Ping()
    if err != nil {
        panic(err.Error())
    }

    fmt.Println("Connected to the database")
}
هر کدام از مقادیر password و host و port و database_name موجود در دستورroot:password@tcp(host:port)/database_name را باید با توجه به اطلاعات دیتابیس‌تان تغییر دهید.

اتصال به دیتابیس PostgreSQL

برای اینکه بتوانید در برنامه golang خود به دیتابیس Postgres متصل شوید؛ در ابتدا باید پکیج‌های مورد نیاز را در برنامه خود نصب کنید؛ برای نصب پکیج‌ها کافیست که در مسیر اصلی برنامه، دستورات زیر را اجرا کنید:

$ go get -u gorm.io/gorm
$ go get -u gorm.io/driver/postgres

پس از نصب پکیج‌ها و import کردن آن‌ها در برنامه Golang، می‌توانید به دیتابیس Postgres متصل شوید؛ قطعه کد زیر یک نمونه از اتصال به دیتابیس Postgres است که می‌توانید از آن استفاده کنید:

package main

import (
	"gorm.io/driver/postgres"
	"gorm.io/gorm"
	"log"
)

func main() {
	// Connect to PostgreSQL
    dsn := "user=root password=password dbname=database_name host=host port=port sslmode=disable"
	db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
	if err != nil {
		log.Fatal(err.Error())
	}

	// Maximum Connections Number
	sqlDB, err := db.DB()
	if err != nil {
		log.Fatal(err.Error())
	}
	sqlDB.SetMaxIdleConns(10)
	sqlDB.SetMaxOpenConns(100)

	log.Println("Connected to the database")
}
هر کدام از متغیرهای password و dbname و host و port موجود درdsn را باید با توجه به اطلاعات دیتابیس‌تان تغییر دهید.

اتصال به دیتابیس SQL Server

برای اینکه بتوانید در برنامه golang خود به دیتابیس SQL Server متصل شوید؛ در ابتدا باید پکیج‌های مورد نیاز را در برنامه خود نصب کنید؛ برای نصب پکیج‌ها کافیست که در مسیر اصلی برنامه، دستورات زیر را اجرا کنید:

$ go get -u gorm.io/gorm
$ go get -u gorm.io/driver/sqlserver

پس از نصب پکیج‌ها و import کردن آن‌ها در برنامه Golang، می‌توانید به دیتابیس SQL Server متصل شوید؛ قطعه کد زیر یک نمونه از اتصال به دیتابیس SQL Server است که می‌توانید از آن استفاده کنید:

package main

import (
    "gorm.io/driver/sqlserver"
	"gorm.io/gorm"
	"log"
)

func main() {
    // connect to SQL Server
	dsn := "sqlserver://sa:password@host:port?connection+timeout=30"
	db, err := gorm.Open(sqlserver.Open(dsn), &gorm.Config{})
	if err != nil {
		log.Fatal(err.Error())
	}

	// Maximum Idle Connections
	sqlDB, err := db.DB()
	if err != nil {
		log.Fatal(err.Error())
	}
	sqlDB.SetMaxIdleConns(10)
	sqlDB.SetMaxOpenConns(100)

	log.Println("Connected to the database")

	// Create Database Using Models
	err = db.Exec("CREATE DATABASE mydatabase").Error
	if err != nil {
		log.Fatal(err.Error())
	}

	log.Println("Database 'mydatabase' created successfully")
}

در قطعه کد بالا، پس از اتصال به دیتابیس SQL Server، برنامه یک دیتابیس به نام mydatabase ایجاد می‌کند. که می‌توانید متناسب با نیازهای خود، آن را تغییر دهید یا حذف کنید.

هر کدام از مقادیر password و host و port و موجود درdsn را باید با توجه به اطلاعات دیتابیس‌تان تغییر دهید.

اتصال به دیتابیس Redis

در ابتدا باید پکیج دیتابیس Redis را نصب کنید. برای این کار دستور go get -u github.com/go-redis/redis/v8 را اجرا کنید‍. سپس برای اتصال به دیتابیس Redis می‌توانید از قطعه کد زیر استفاده کنید:

package main

import (
    "context"
    "fmt"
    "github.com/go-redis/redis/v8"
)

func main() {
    // Connect to Redis
    client := redis.NewClient(&redis.Options{
        Addr:     "host:port", // host and port
        Password: "password", // password
        DB:       0,         // DB Number
    })

    // Check Connection
    pong, err := client.Ping(context.Background()).Result()
    if err != nil {
        fmt.Println("Error connecting to Redis:", err)
        return
    }

    fmt.Println("Connected to Redis:", pong)
}
هر کدام از مقادیر فیلدهای Addr و Password و DB موجود درclient را باید با توجه به اطلاعات دیتابیس‌تان تغییر دهید.

اتصال به دیتابیس Elastichsearch

برای اتصال به دیتابیس Elastic می‌توانید از قطعه کد زیر استفاده کنید:

package main

import (
	"encoding/base64"
	"fmt"
	"io"
	"net/http"
)

func main() {
	// Elasticsearch connection information
	url := "http://host:port/_cluster/health?pretty"
	username := "username"
	password := "password"

	// Creating an HTTP request
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		fmt.Println("Error creating HTTP request:", err)
		return
	}

	// Adding authentication information to the request
	req.Header.Add("Authorization", "Basic "+basicAuth(username, password))

	// Sending the request to Elasticsearch
	client := http.DefaultClient
	res, err := client.Do(req)
	if err != nil {
		fmt.Println("Error sending HTTP request:", err)
		return
	}
	defer res.Body.Close()

	// Reading and printing the response
	body, err := io.ReadAll(res.Body)
	if err != nil {
		fmt.Println("Error reading response body:", err)
		return
	}

	fmt.Println(string(body))
}

// Function to create a Base64-encoded authentication string
func basicAuth(username, password string) string {
	auth := username + ":" + password
	return base64.StdEncoding.EncodeToString([]byte(auth))
}
در متغیر url بایستی به جای host و port اطلاعات دیتابیس خود را وارد کنید. این کار را برای متغیرهای username و password هم باید انجام دهید.

متوجه شدم، برو گام بعدی!
;