- vừa được xem lúc

Sử dụng Go Lang để tương tác với cơ sở dữ liệu PostgreSQL và MySQL

0 0 3

Người đăng: Nguyễn Văn Huy

Theo Viblo Asia

Giới thiệu

Go Lang (hay Golang) là một ngôn ngữ lập trình được phát triển bởi Google, nổi tiếng với hiệu suất cao, đơn giản và dễ bảo trì. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng Go Lang để tương tác với hai hệ quản trị cơ sở dữ liệu phổ biến là PostgreSQLMySQL.

Cài đặt driver cho PostgreSQL và MySQL

Trước khi bắt đầu, chúng ta cần cài đặt driver cho PostgreSQL và MySQL để Go Lang có thể kết nối và tương tác với cơ sở dữ liệu. Đối với PostgreSQL, chúng ta sử dụng driver "github.com/lib/pq", và đối với MySQL, chúng ta sử dụng driver "github.com/go-sql-driver/mysql". Cài đặt driver cho PostgreSQL và MySQL bằng các lệnh sau:

go get github.com/lib/pq
go get github.com/go-sql-driver/mysql

Kết nối đến cơ sở dữ liệu PostgreSQL và MySQL

Sau khi cài đặt driver cho PostgreSQL và MySQL, chúng ta có thể bắt đầu kết nối đến cơ sở dữ liệu. Đầu tiên, chúng ta import các gói cần thiết:

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

Sau đó, chúng ta có thể kết nối đến cơ sở dữ liệu PostgreSQL và MySQL bằng cách sử dụng hàm sql.Open(). Dưới đây là ví dụ về cách kết nối đến cơ sở dữ liệu PostgreSQL và MySQL, hãy chọn cách kết nối tương ứng với CSDL bạn đang làm:

func main() { // Kết nối PostgreSQL pgDB, err := sql.Open("postgres", "host=localhost port=5432 user=postgres password=your_password dbname=your_database sslmode=disable") if err != nil { log.Fatal(err) } defer pgDB.Close() // Kết nối MySQL mysqlDB, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/your_database") if err != nil { log.Fatal(err) } defer mysqlDB.Close() // Kiểm tra kết nối thành công err = pgDB.Ping() if err != nil { log.Fatal(err) } err = mysqlDB.Ping() if err != nil { log.Fatal(err) } fmt.Println("Kết nối thành công")
}

Trong ví dụ trên, chúng ta sử dụng hàm sql.Open() để kết nối đến cơ sở dữ liệu PostgreSQL và MySQL. Chúng ta chỉ cần thay đổi các thông tin kết nối như host, port, user, password, dbname để phù hợp với cấu hình của cơ sở dữ liệu của bạn. Hãy chắc chắn rằng bạn đã cung cấp đúng thông tin kết nối để kết nối thành công.

Sau khi kết nối, chúng ta sử dụng hàm Ping() để kiểm tra kết nối thành công đến cơ sở dữ liệu. Nhớ quan trọng là đảm bảo bạn đã cung cấp đúng thông tin kết nối để kết nối thành công.

Hãy chạy thử xem đã kết nối thành công hay chưa. Nếu có dòng Kết nối thành công xuất hiện thì bạn đã xong, còn nếu xuất hiện lỗi ví dụ như:

2024/04/29 09:46:43 dial tcp 127.0.0.1:5432: connect: connection refused
exit status 1

Thì bạn cần kiểm tra lại phần kết nối đã điền chính xác thông tin hay chưa.

Tương tác với cơ sở dữ liệu PostgreSQL và MySQL

Sau khi kết nối thành công đến cơ sở dữ liệu PostgreSQL và MySQL, chúng ta có thể thực hiện các thao tác tương tác với cơ sở dữ liệu như truy vấn dữ liệu, chèn dữ liệu, cập nhật dữ liệu, và xóa dữ liệu.

Dưới đây là một ví dụ về cách thực hiện truy vấn dữ liệu từ PostgreSQL và MySQL, lưu ý các thông tin kết nối vẫn giữ nguyên ở bước trên nhé:

func main() { // Kết nối PostgreSQL pgDB, err := sql.Open("postgres", "host=localhost port=5432 user=postgres password=your_password dbname=your_database sslmode=disable") if err != nil { log.Fatal(err) } defer pgDB.Close() // Truy vấn dữ liệu từ PostgreSQL rows, err := pgDB.Query("SELECT id, email FROM users ORDER BY id LIMIT 10") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id int var name string err := rows.Scan(&id, &name) if err != nil { log.Fatal(err) } fmt.Println("ID:", id, "Name:", name) } // Kết nối MySQL mysqlDB, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/your_database") if err != nil { log.Fatal(err) } defer mysqlDB.Close() // Truy vấn dữ liệu từ MySQL rows, err = mysqlDB.Query("SELECT id, email FROM users ORDER BY id LIMIT 10") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id int var name string err := rows.Scan(&id, &name) if err != nil { log.Fatal(err) } fmt.Println("ID:", id, "Name:", name) }
}

Trong ví dụ trên, chúng ta sử dụng hàm Query() để thực hiện truy vấn dữ liệu từ bảng "users" trong cơ sở dữ liệu PostgreSQL và MySQL. Sau đó, chúng ta sử dụng hàm Scan() để đọc dữ liệu từ kết quả truy vấn và hiển thị kết quả ra màn hình.

Tương tự, chúng ta có thể sử dụng các hàm như Exec() để thực hiện các thao tác thêm mới, cập nhật và xóa dữ liệu trong cơ sở dữ liệu PostgreSQL và MySQL:

Thêm mới dữ liệu

 // Thêm mới dữ liệu vào PostgreSQL _, err = pgDB.Exec("INSERT INTO users (name, email) VALUES ($1, $2)", "Nguyen Van A", "nguyen.van.a@example.com") if err != nil { log.Fatal(err) } // Thêm mới liệu vào MySQL _, err = mysqlDB.Exec("INSERT INTO users (name, email) VALUES (?, ?)", "Nguyen Van A", "nguyen.van.a@example.com") if err != nil { log.Fatal(err) }

Cập nhật dữ liệu

 // Cập nhật dữ liệu trong PostgreSQL _, err = pgDB.Exec("UPDATE users SET email = $1 WHERE id = $2", "new_email@example.com", 1) if err != nil { log.Fatal(err) } // Cập nhật dữ liệu trong MySQL _, err = mysqlDB.Exec("UPDATE users SET email = ? WHERE id = ?", "new_email@example.com", 1) if err != nil { log.Fatal(err) }

Xóa dữ liệu

 // Xóa dữ liệu từ PostgreSQL _, err = pgDB.Exec("DELETE FROM users WHERE id = $1", 1) if err != nil { log.Fatal(err) } // Xóa dữ liệu từ MySQL _, err = mysqlDB.Exec("DELETE FROM users WHERE id = ?", 1) if err != nil { log.Fatal(err) }

Trong các ví dụ trên, chúng ta sử dụng hàm Exec() để thực hiện các câu lệnh SQL như INSERT, UPDATE, DELETE. Chúng ta truyền các giá trị dữ liệu vào câu lệnh SQL bằng cách sử dụng các tham số được đánh số $1, $2, .... trong PostgreSQL và các tham số vị trí ?, ?, ... trong MySQL. Các câu lệnh giữa PostgreSQL và MySQL gần như là giống nhau chỉ khác tham số mà thôi.

Kết luận

Trong bài viết này, chúng ta đã khám phá cách sử dụng Go Lang để tương tác với cơ sở dữ liệu PostgreSQL và MySQL. Chúng ta đã cài đặt driver cho PostgreSQL và MySQL, kết nối đến cơ sở dữ liệu và thực hiện các thao tác truy vấn dữ liệu. Việc sử dụng Go Lang cùng các driver hỗ trợ giúp chúng ta dễ dàng tương tác với cơ sở dữ liệu và xây dựng ứng dụng mạnh mẽ.

Hy vọng rằng bài viết này đã giúp bạn hiểu cách sử dụng Go Lang để tương tác với cơ sở dữ liệu PostgreSQL và MySQL.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Index trong Mysql và cách sử dụng

Một số database là một cấu trúc dữ liệu để cải thiện tốc độ của các hoạt động trong một bảng. Trong khi tạo index, nó cần được xem xét rằng các cột đó sẽ được sử dụng để thực hiện các truy vấn SQL và tạo ra một hoặc nhiều chỉ số trên các cột đó là gì.

0 0 33

- vừa được xem lúc

Tạo ER Diagram của một Database bằng MySQL Workbench

Trong số chúng ta ai cũng đều đã từng trải qua một thời sinh viên tràn ngập đồ án này, đồ án kia đúng không? Mình cũng đã từng có một thời như thế Mà chuyên ngành chúng ta là công nghệ thông tin thì làm việc với Database trong mỗi đồ án là điều không thể thiếu rồi. Chuyện sẽ chẳng có gì to tát cho đ

0 0 53

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 92

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 898

- vừa được xem lúc

Mysql index strategy

Trong Mysql, index hỗ trợ việc tìm kiếm các rows theo từng giá trị của các columns trong bảng trở nên nhanh chóng. Việc tìm kiếm sẽ phải scan toàn bộ table nếu các column trong câu query không được đánh index một cách thích hợp. . .

0 0 51

- vừa được xem lúc

CRUD Nodejs với mysql

Mở Đầu. Xin chào các bạn tiếp tục với series Nodejs cơ bản, bài hôm nay mình sẽ tiếp tục làm thêm các chức năng xem chi tiết và sửa và xóa sản phẩm.

0 0 65