Ինչպես օգտագործել ցանկացած SQL տվյալների բազա Go-ում


Տվյալների բազայի աբստրակցիոն պարզ փաթեթով, SQL-ից Go-ից օգտվելն ավելի հեշտ է, քան դուք կարող եք մտածել:

SQL տվյալների բազաները պահպանում են տվյալների հավաքածուները տողերում և սյունակներում: Դուք կարող եք առբերել և թարմացնել տվյալները հարաբերական տվյալների բազայի կառավարման համակարգում (RDBMS)՝ օգտագործելով SQL լեզուն: Շատ մատչելի SQL տվյալների բազաներից ամենատարածվածներն են MySQL, PostgreSQL, Microsoft SQL Server և SQLite:

Go-ում տվյալների բազաների հետ փոխգործակցության գործառույթը գտնվում է տվյալների բազայի/sql փաթեթում՝ ստանդարտ գրադարանի մաս:

Տվյալների բազան/sql փաթեթը փոխազդում է SQL տվյալների բազաների հետ՝ օգտագործելով դրայվերները: Դուք կարող եք ներմուծել համապատասխան վարորդական փաթեթ ձեր RDBMS-ի համար և օգտագործել այն տվյալների բազայի հետ փոխազդելու համար:

Ինչպես սկսել SQL տվյալների բազաների հետ Go-ում

Տվյալների բազան/sql փաթեթը ընդհանուր ինտերֆեյս է հարաբերական տվյալների բազաների համար: Հատուկ տվյալների բազայի սերվերի հետ աշխատելու համար դուք պետք է օգտագործեք առկա բազմաթիվ դրայվերներից մեկը:

Բարեբախտաբար, դուք չպետք է անհանգստանաք վարորդից դուրս հատուկ իրականացումներից: Տվյալների բազան/sql փաթեթը մշակում է տվյալների բազայի գործողությունները անկախ այն սերվերից, որին միանում եք:

Go-ի տվյալների բազայի ամենատարածված վարորդներից մի քանիսն են.

  • Go-SQL վարորդ (MySQL)
  • PQ (PostgreSQL)
  • Go-SQLite3 (SQLite)
  • MSSQL DB (Microsoft SQL Server)

Դուք կարող եք օգտագործել LibHunt վարորդների ցանկը՝ տվյալների բազայի այլ տեսակների համար համարժեքներ գտնելու համար: Ցանկը նաև ցույց է տալիս տվյալների բազայի յուրաքանչյուր համակարգի հարաբերական ժողովրդականությունը.

Go տվյալների բազայի դրայվերների տեղադրում և ներմուծում

Երբ ստեղծեք Go աշխատանքային տարածք և սկզբնավորեք Go մոդուլների ֆայլը, տեղադրեք վարորդը, որը համապատասխանում է ձեր տվյալների բազայի համակարգին: Օրինակ՝ գործարկեք հետևյալ հրամաններից մեկը ձեր աշխատանքային տարածքի գրացուցակում՝ MySQL կամ SQLite դրայվերը տեղադրելու համար.

go get -u github.com/go-sql-driver/mysql
go get github.com/mattn/go-sqlite3

Ձեր վարորդը տեղադրելուց հետո ներմուծեք այն կողմնակի ազդեցությունների համար՝ փաթեթից առաջ նախածանց դնելով: Օրինակ՝ MySQL դրայվերը տվյալների բազայի/sql փաթեթի կողքին ներմուծելու համար.

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

Կողմնակի ազդեցությունների համար վարորդների փաթեթը ներմուծելով՝ դուք կարող եք այն օգտագործել տվյալների բազայի հետ միանալու և գործողություններ իրականացնելու համար:

Միացում SQL տվյալների բազայի հետ Go-ով

Տվյալների բազայի դրայվերները ներմուծելուց հետո կարող եք ստեղծել տվյալների բազայի կապ՝ օգտագործելով տվյալների բազա/sql փաթեթի Բացել մեթոդը: Այս մեթոդը վերցնում է վարորդի անունը և ուղին դեպի տվյալների բազա (SQLite-ի համար) կամ կապի տող (MySQL-ի համար): Օրինակ, օգտագործեք հետևյալներից որևէ մեկը.

db, err := sql.Open("sqlite3", "models/testdb.db") // SQLite
 
db, err := sql.Open("mysql", "user:password@/dbname") // MySQL

Երբ փորձեք բացել կապը, հիշեք, որ ստուգեք սխալը.

if err != nil {
    log.Fatalln(err)
}

Կախված ձեր տվյալների բազայի համակարգից, Բացել մեթոդը կարող է սխալ առաջացնել, եթե տվյալների բազան գոյություն չունի: Տվյալների շտեմարանին միանալուց հետո կարող եք հարցումներ կատարել և պատրաստել հայտարարություններ՝ օգտագործելով Open վերադարձվող տվյալների բազայի օրինակը:

SQL հրամանների կատարում

Դուք կարող եք կատարել SQL հրամաններ՝ օգտագործելով ձեր տվյալների բազայի օրինակի Պատրաստել մեթոդը: Պատրաստել մեթոդն ընդունում է SQL հրամանը և վերադարձնում է պատրաստված հայտարարություն՝ սխալի օբյեկտի հետ միասին կատարման համար: Օրինակ, եթե ցանկանում եք ստեղծել նոր աղյուսակ.

command, err := db.Prepare("CREATE TABLE IF NOT EXISTS login(username TEXT, password TEXT)")

Վերևի հայտարարությունը ստեղծում է login անունով աղյուսակ, եթե այն արդեն գոյություն չունի: Նոր աղյուսակն ունի օգտանուն և գաղտնաբառ անուններով դաշտեր, որոնցից յուրաքանչյուրը TEXT է:

Եթե դուք արժեքներ եք տեղադրում ձեր ծրագրից ձեր հարցումների մեջ, կարող եք օգտագործել հարցական նշանի (?) նշումը տեղապահները նշելու համար և այնուհետև փոխանցել պարամետրերը հայտարարությունը կատարելու ժամանակ:

command, err := db.Prepare("INSERT INTO login(username, password) values(?,?)")

Պատրաստված հայտարարություն ստեղծելուց հետո կարող եք այն կատարել՝ օգտագործելով իր Exec մեթոդը: Այս մեթոդը թույլ է տալիս փոխանցել պարամետրերի արժեքները ձեր ծրագրից.

exec, err := command.Exec(value1, Value2)
 
if err != nil {
    return 
}

Առաջին արժեքը, որը վերադարձնում է Exec(), ձեր տվյալների բազայում SQL հարցման արդյունքն է: Օգտագործելով այս հարցման արդյունքը, դուք կարող եք ստուգել տողերի քանակը, որոնք ազդել են կամ վերջին ներդրված ID-ն.

affected, err := exec.RowsAffected()
 
if err != nil {
    return
}
    
fmt.Println(affected)
    
id, err := exec.LastInsertId()
 
if err != nil {
    return
}
 
fmt.Println(id)

Հարցման արդյունքների բեռնում

Տվյալների բազան/sql փաթեթը թույլ է տալիս հարցումներ կատարել տվյալների բազայի արդյունքների վրա՝ օգտագործելով տվյալների բազայի օրինակի Query մեթոդը.

rows, err := db.Query("SELECT * FROM User")
 
if err != nil {
    return
}

Հարցում մեթոդը վերադարձնում է Տողեր կառուցվածք, որը կարող եք օգտագործել ձեր արդյունքների հավաքածուի հետ աշխատելու համար: Օրինակ, դուք կարող եք օգտագործել ձեր տողերի օրինակի Հաջորդ մեթոդը՝ դրա վրա կրկնելու և առանձին տողերի հետ աշխատելու համար.

var username, password string
 
for rows.Next() {
    err := rows.Scan(&username, &password)
    
    if err != nil {
        log.Fatalln(err)
    }
 
    fmt.Println(username, password)
}

Վերևի օրինակում երկու տողային փոփոխականներ՝օգտվողի անունը և գաղտնաբառ— ներկայացնում են յուրաքանչյուր սյունակի արժեքը: Սկան մեթոդը վերծանում է ընթացիկ տողը այդ համապատասխան փոփոխականների մեջ:

SQL տվյալների բազաները միշտ հարմար են

Տվյալների բազաների օգտագործումը Go-ում պարզ է տվյալների բազայի/sql փաթեթի հետ: Դուք կարող եք օգտագործել այն Go-ում SQL հրամանները հեշտությամբ հարցումներ անելու և կատարելու համար:

SQL տվյալների շտեմարանները շատ հավելվածների հիմքում են, հատկապես նրանք, որոնք առնչվում են մեծ կամ բարդ տվյալների հավաքածուների հետ: Դուք կարող եք օգտագործել տվյալների բազաները, ինչպիսիք են հիշողության մեջ գտնվող SQLite տվյալների բազան ձեր պարզ նախագծերի համար, ինչպիսիք են վեբ քերծումը և բոտերի կառուցումը:

SQL-ի և տվյալների բազայի կառավարման համակարգերի պատշաճ իմացությունը կարևոր է դրանք ձեր ծրագրերում արդյունավետ օգտագործելու համար: Այնուամենայնիվ, եթե որոշեք չսովորել SQL, կարող եք սովորել, թե ինչպես օգտագործել ORM-ները՝ Go-ում SQL տվյալների բազաների հետ փոխազդելու համար: