Ինչպես օգտագործել ցանկացած 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 տվյալների բազաների հետ փոխազդելու համար: