Cách sử dụng bất kỳ cơ sở dữ liệu SQL nào trong Go
Cơ sở dữ liệu SQL lưu trữ tập hợp dữ liệu theo hàng và cột. Bạn có thể truy xuất và cập nhật dữ liệu trong hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) bằng ngôn ngữ SQL. Trong số nhiều cơ sở dữ liệu SQL có sẵn, phổ biến nhất là MySQL, PostgreSQL, Microsoft SQL Server và SQLite.
Chức năng tương tác với cơ sở dữ liệu trong Go nằm trong gói cơ sở dữ liệu / sql, một phần của thư viện chuẩn.
Gói cơ sở dữ liệu / sql tương tác với cơ sở dữ liệu SQL bằng cách sử dụng trình điều khiển. Bạn có thể nhập gói trình điều khiển thích hợp cho RDBMS của mình và sử dụng nó để tương tác với cơ sở dữ liệu.
Mục Lục
Bắt đầu với Cơ sở dữ liệu SQL trong Go
Gói cơ sở dữ liệu / sql là một giao diện chung cho cơ sở dữ liệu quan hệ. Để làm việc với một máy chủ cơ sở dữ liệu cụ thể, bạn sẽ cần sử dụng một trong nhiều trình điều khiển có sẵn.
Rất may, bạn không phải lo lắng về các triển khai cụ thể ngoài trình điều khiển. Gói cơ sở dữ liệu / sql xử lý các hoạt động cơ sở dữ liệu độc lập với máy chủ bạn đang kết nối.
Một số trình điều khiển cơ sở dữ liệu Go phổ biến nhất là:
Bạn có thể sử dụng danh sách trình điều khiển LibHunt để tìm tương đương cho các loại cơ sở dữ liệu khác. Danh sách cũng cho thấy mức độ phổ biến tương đối của từng hệ thống cơ sở dữ liệu:
Cài đặt và nhập trình điều khiển cơ sở dữ liệu Go
Khi bạn đã tạo không gian làm việc Go và khởi tạo tệp mô-đun Go, hãy cài đặt trình điều khiển phù hợp với hệ thống cơ sở dữ liệu của bạn. Ví dụ: chạy một trong các lệnh sau trong thư mục không gian làm việc của bạn để cài đặt trình điều khiển MySQL hoặc SQLite:
go get -u github.com/go-sql-driver/mysql
go get github.com/mattn/go-sqlite3
Sau khi bạn đã cài đặt trình điều khiển của mình, hãy nhập trình điều khiển đó để biết các tác dụng phụ bằng cách thêm dấu gạch dưới trước gói. Ví dụ: để nhập trình điều khiển MySQL cùng với gói cơ sở dữ liệu / sql:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Bằng cách nhập gói trình điều khiển cho các tác dụng phụ, bạn có thể sử dụng nó để kết nối và thực thi các thao tác trên cơ sở dữ liệu.
Kết nối với cơ sở dữ liệu SQL với Go
Sau khi nhập trình điều khiển cơ sở dữ liệu, bạn có thể tạo kết nối cơ sở dữ liệu bằng cách sử dụng Mở phương pháp của cơ sở dữ liệu / sql bưu kiện. Phương thức này lấy tên và đường dẫn của trình điều khiển đến cơ sở dữ liệu (đối với SQLite) hoặc một chuỗi kết nối (đối với MySQL). Ví dụ: sử dụng một trong hai cách sau:
db, err := sql.Open("sqlite3", "models/testdb.db") db, err := sql.Open("mysql", "user:password@/dbname")
Khi bạn đã cố gắng mở kết nối, hãy nhớ kiểm tra lỗi:
if err != nil {
log.Fatalln(err)
}
Tùy thuộc vào hệ thống cơ sở dữ liệu của bạn, Mở phương thức có thể trả về lỗi nếu cơ sở dữ liệu không tồn tại. Khi bạn đã kết nối với cơ sở dữ liệu, bạn có thể thực thi các truy vấn và chuẩn bị các câu lệnh bằng cách sử dụng phiên bản cơ sở dữ liệu Mở lợi nhuận.
Thực thi các lệnh SQL
Bạn có thể thực hiện các lệnh SQL bằng cách sử dụng Chuẩn bị các phương pháp của cá thể cơ sở dữ liệu của bạn. Các Chuẩn bị các phương thức nhận một lệnh SQL và trả về một câu lệnh đã chuẩn bị để thực thi cùng với một đối tượng lỗi. Ví dụ: nếu bạn muốn tạo một bảng mới:
command, err := db.Prepare("CREATE TABLE IF NOT EXISTS login(username TEXT, password TEXT)")
Câu lệnh trên tạo một bảng có tên đăng nhập, nếu nó chưa tồn tại. Bảng mới có các trường có tên tên tài khoản và mật khẩu mở khóamỗi loại CHỮ.
Nếu bạn đang chèn các giá trị từ chương trình của mình vào các truy vấn của mình, bạn có thể sử dụng ký hiệu dấu chấm hỏi (?) Để biểu thị trình giữ chỗ và sau đó chuyển các tham số khi thực thi câu lệnh.
command, err := db.Prepare("INSERT INTO login(username, password) values(?,?)")
Khi bạn đã tạo một câu lệnh đã chuẩn bị sẵn, bạn có thể thực thi nó bằng cách sử dụng Exec phương pháp. Phương thức này cho phép bạn chuyển các giá trị tham số từ chương trình của mình:
exec, err := command.Exec(value1, Value2)if err != nil {
return
}
Giá trị đầu tiên mà Exec () trả về là kết quả của truy vấn SQL trên cơ sở dữ liệu của bạn. Sử dụng kết quả truy vấn này, bạn có thể kiểm tra số hàng bị ảnh hưởng hoặc ID được chèn cuối cùng:
affected, err := exec.RowsAffected()if err != nil {
return
}
fmt.Println(affected)
id, err := exec.LastInsertId()
if err != nil {
return
}
fmt.Println(id)
Tìm nạp kết quả truy vấn
Gói cơ sở dữ liệu / sql cho phép bạn truy vấn kết quả cơ sở dữ liệu bằng cách sử dụng Truy vấn phương thức của một cá thể cơ sở dữ liệu:
rows, err := db.Query("SELECT * FROM User")if err != nil {
return
}
Các Truy vấn phương thức trả về một Hàng cấu trúc mà bạn có thể sử dụng để làm việc với tập kết quả của mình. Ví dụ, bạn có thể sử dụng Tiếp theo phương thức của phiên bản hàng của bạn để lặp lại nó và làm việc với các hàng riêng lẻ:
var username, password stringfor rows.Next() {
err := rows.Scan(&username, &password)
if err != nil {
log.Fatalln(err)
}
fmt.Println(username, password)
}
Trong ví dụ trên, hai biến chuỗi—tên tài khoản và mật khẩu mở khóa—Trình bày giá trị từng cột. Các Quét phương thức giải mã hàng hiện tại thành các biến tương ứng.
Cơ sở dữ liệu SQL luôn luôn tiện dụng
Sử dụng cơ sở dữ liệu trong Go rất đơn giản với gói cơ sở dữ liệu / sql. Bạn có thể sử dụng nó để truy vấn và thực thi các lệnh SQL trong Go một cách dễ dàng.
Cơ sở dữ liệu SQL là cốt lõi của nhiều ứng dụng, đặc biệt là những ứng dụng xử lý các tập dữ liệu lớn hoặc phức tạp. Bạn có thể sử dụng cơ sở dữ liệu như cơ sở dữ liệu SQLite trong bộ nhớ cho các dự án đơn giản của mình như duyệt web và xây dựng chương trình.
Kiến thức phù hợp về SQL và hệ quản trị cơ sở dữ liệu là điều cần thiết để sử dụng chúng trong các chương trình của bạn một cách hiệu quả. Tuy nhiên, nếu bạn chọn không học SQL, bạn có thể học cách sử dụng ORM để tương tác với cơ sở dữ liệu SQL trong Go.