Postgres Golang

Postgres Golang



Thường được gọi là Golang, Go là ngôn ngữ lập trình mã nguồn mở, được biên dịch và nhập tĩnh được tạo bởi Google. Nó được xây dựng để dễ hiểu, nhanh chóng, rõ ràng và có hiệu suất cao.

PostgreSQL, thường được gọi đơn giản là Postgres, là một hệ thống cơ sở dữ liệu quan hệ đối tượng mã nguồn mở mạnh mẽ. Với hơn 30 năm phát triển tích cực, nó đã đạt được danh tiếng mạnh mẽ về sự mạnh mẽ, các tính năng nâng cao và tuân thủ các tiêu chuẩn đáng kể.

Nó được thiết kế để xử lý khối lượng công việc lớn, từ các máy đơn lẻ đến kho dữ liệu hoặc dịch vụ web có nhiều người dùng đồng thời. Nó cung cấp tính toàn vẹn và độ bền của giao dịch, đồng thời hỗ trợ nhiều loại dữ liệu nâng cao khác nhau và ngôn ngữ thao tác dữ liệu linh hoạt, mạnh mẽ.







Hướng dẫn này dạy chúng ta cách định cấu hình và kết nối máy chủ PostgreSQL với ứng dụng Go.



Yêu cầu:

Đi ngôn ngữ lập trình – Nó đảm bảo rằng trình biên dịch Go đã được cài đặt trên máy của bạn.



Cơ sở dữ liệu PostgreSQL – Bạn cũng cần cài đặt PostgreSQL. Bạn có thể cài đặt nó trực tiếp trên máy của mình hoặc sử dụng bộ chứa Docker để thiết lập đơn giản hơn.





Công cụ phát triển – Môi trường phát triển tích hợp (IDE) hỗ trợ Go như Visual Studio Code, GoLand, v.v.

Kiến thức cơ bản về SQL và Go – Để tương tác với cơ sở dữ liệu PostgreSQL, bạn phải hiểu SQL và các truy vấn khác nhau mà bạn cần thực hiện. Bạn cũng cần có hiểu biết cơ bản về ngôn ngữ cờ vây.



Với các yêu cầu nhất định được đáp ứng, chúng ta có thể tiến hành các bước sau.

Thiết lập dự án

Hãy để chúng tôi bắt đầu bằng cách thiết lập cấu trúc thư mục dự án của chúng tôi. Tạo thư mục chính nơi bạn cần lưu trữ mã nguồn dự án.

$ mkdir golang_postgres

Điều hướng vào thư mục và khởi tạo mô-đun Go mới.

$ đĩa CD golang_postgres && đi mod init chính

Cài đặt trình điều khiển cần thiết

Để tương tác với cơ sở dữ liệu PostgreSQL, chúng tôi cần trình điều khiển PostgreSQL cho ngôn ngữ lập trình Go.

Đối với hướng dẫn này, chúng tôi sử dụng trình điều khiển pq cung cấp nhiều tính năng để hoạt động với cơ sở dữ liệu PostgreSQL.

Bạn có thể cài đặt nó bằng cách chạy lệnh sau:

đi lấy github.com / lib / pq

Tạo cơ sở dữ liệu

Bước tiếp theo là tạo cơ sở dữ liệu PostgreSQL mới. Một lần nữa, chúng ta có thể làm điều này trong PostgreSQL shell.

$ psql -TRONG postgres

Lệnh này nhắc bạn nhập mật khẩu của tệp postgres. Sau khi đăng nhập, hãy chạy lệnh “tạo cơ sở dữ liệu” để khởi tạo cơ sở dữ liệu mới:

postgres=# tao golang cơ sở dữ liệu;
TẠO NÊN CƠ SỞ DỮ LIỆU

Lệnh đã cho tạo một cơ sở dữ liệu mới gọi là “golang”. Vui lòng thay thế tên cơ sở dữ liệu bằng tên bạn muốn.

Sau đó, bạn có thể xác minh rằng cơ sở dữ liệu được tạo thành công bằng cách kết nối với nó.

postgres=# \c golang;
Bây giờ bạn được kết nối với cơ sở dữ liệu 'golang' với tư cách là người dùng 'postgres'.

Tiếp theo, thiết lập bảng nơi bạn muốn lưu trữ dữ liệu. Chúng tôi tạo một bảng đơn giản cho hướng dẫn này để lưu trữ thông tin phiên.

TẠO BẢNG db_clients (
id KHÓA CHÍNH NỐI TIẾP,
tên VARCHAR(100) KHÔNG NULL,
session_time DẤU THỜI GIAN KHÔNG NULL,
number_of_queries INT MẶC ĐỊNH 0,
active_state BOOLESE MẶC ĐỊNH SAI
);

Truy vấn đã cho sẽ tạo một bảng mới có tên là “db_clients” lưu trữ thông tin về các máy khách đã đăng nhập vào một máy chủ cơ sở dữ liệu nhất định.

Kết nối ứng dụng Go với PostgreSQL

Khi chúng tôi thiết lập cơ sở dữ liệu và bảng cơ sở dữ liệu, chúng tôi có thể tiếp tục và tìm hiểu cách kết nối ứng dụng Go của chúng tôi với máy chủ PostgreSQL.

Bắt đầu bằng cách tạo tệp “main.go” trong thư mục gốc của dự án của bạn:

$ chạm chính.go

Tiếp theo, chỉnh sửa tệp bằng trình soạn thảo văn bản bạn chọn:

$ bởi vì chính.go

Trong tệp “main.go”, thêm mã nguồn như sau:

gói chính

nhập khẩu (
'cơ sở dữ liệu/sql'
'fmt'
'nhật ký'

_ 'github.com/lib/pq'
)

chức năng chính ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, lỗi := sql.Mở ( 'postgres' , connStr )
nếu như sai lầm ! = không {
log.Fatal ( sai lầm )
}

nếu như lỗi = db.Ping ( ) ; sai lầm ! = không {
log.Fatal ( sai lầm )
}

fmt.Println ( 'Đã kết nối với cơ sở dữ liệu' )
}

Trong đoạn mã trước, chúng tôi bắt đầu bằng cách nhập các mô-đun cần thiết. Sau đó chúng tôi xác định chức năng chính. Cuối cùng, trong chức năng chính, chúng tôi xác định chuỗi kết nối cho phép chúng tôi chỉ định máy chủ đích, người dùng cơ sở dữ liệu, mật khẩu cơ sở dữ liệu và cơ sở dữ liệu đích thực tế.

Mô-đun hỗ trợ các tham số sau trong chuỗi kết nối:

  • dbname – Tên của cơ sở dữ liệu để kết nối.
  • người dùng – Người dùng đăng nhập với tư cách.
  • mật khẩu – Mật khẩu của người dùng.
  • máy chủ – Máy chủ để kết nối. Các giá trị bắt đầu bằng “/” dành cho socket miền Unix (mặc định là localhost).
  • cổng – Cổng để liên kết (mặc định là 5432).
  • sslmode – Có sử dụng SSL hay không (mặc định là bắt buộc; đây không phải là mặc định cho libpq).
  • fallback_application_name – Một application_name để dự phòng nếu không được cung cấp.
  • connect_timeout – Thời gian chờ kết nối tối đa tính bằng giây. Không hoặc không được chỉ định có nghĩa là chờ đợi vô thời hạn.
  • sslcert – Vị trí tệp chứng chỉ. Tệp phải chứa dữ liệu được mã hóa PEM.
  • sslkey – Vị trí tệp chính. Tệp phải chứa dữ liệu được mã hóa PEM.
  • sslrootcert – Vị trí của tệp chứng chỉ gốc. Tệp phải chứa dữ liệu được mã hóa PEM.

Bạn có thể định cấu hình các thuộc tính kết nối đích của mình nếu cần. Để định cấu hình SSL và các tham số SSLMode được chấp nhận, hãy xem hướng dẫn của chúng tôi về https://linuxhint.com/postgres-sslmode .

Sau khi hài lòng với các thuộc tính kết nối, bạn có thể chạy mã trước đó để kiểm tra xem kết nối có được thiết lập hay không.

chạy đi .\main.go

Sau khi kết nối, bạn sẽ nhận được đầu ra sau:

Đã kết nối với cơ sở dữ liệu

PostgreSQL Chèn dữ liệu vào bảng

Bước tiếp theo là chèn dữ liệu mẫu vào bảng mà chúng ta đã tạo trước đó. Chúng ta có thể làm điều này bằng cách xác định các truy vấn chèn dưới dạng một chuỗi ký tự và sau đó sử dụng hàm db.Exec() để chạy truy vấn đích.

Mã này như sau:

---
insertStatement := `CHÈN VÀO db_clients (tên, thời gian phiên, số_truy vấn, trạng thái hoạt động)
GIÁ TRỊ
('psql', '2023-05-26 10:15:00', 10, true),
('datagrip', '2023-05-26 09:30:00', 5, true),
('dbeaver', '2023-05-26 11:00:00', 20, true),
('bàn làm việc', '2023-05-26 14:45:00', 15, sai),
('remote', '2023-05-26 13:20:00', 8, true);`

_, err = db.Exec(insertStatement)
nếu sai != nil {
log.Fatal(err)
}

Nếu bạn chạy mã trước đó, mã này sẽ chèn các bản ghi đã chỉ định vào bảng đích.

Dữ liệu truy vấn PostgreSQL

Để truy vấn các hàng từ bảng, chúng ta có thể định nghĩa câu lệnh select dưới dạng một chuỗi và sử dụng db.Query() để chạy nó. Chúng ta có thể lặp qua các hàng của bảng bằng cách sử dụng hàm Next() và in chúng ra như sau:

hàng, err := db.Query ( 'CHỌN * TỪ db_client' )
nếu như sai lầm ! = không {
log.Fatal ( sai lầm )
}
trì hoãn hàng.Đóng ( )

hàng.Tiếp theo ( ) {
đã từng là nhận dạng int
chuỗi tên var
var sessionTime time.Time
var numberOfQueries int
var activeState bool

err := rows.Scan ( & nhận dạng , & tên, & thời gian phiên, & sốOfQuery, & trạng thái hoạt động )
nếu như sai lầm ! = không {
log.Fatal ( sai lầm )
}

fmt.Printf ( 'ID: %d, Tên: %s, Thời gian phiên: %s, Số truy vấn: %d, Trạng thái hoạt động: %t \N ' , nhận dạng , tên, sessionTime, numberOfQueries, activeState )
}

nếu như err = rows.Err ( ) ; sai lầm ! = không {
log.Fatal ( sai lầm )
}

Sau khi chúng tôi chạy mã trước đó, mã này sẽ in tất cả các hàng từ bảng db_clients như được hiển thị trong đầu ra ví dụ sau:

Ở đó bạn có nó!

Phần kết luận

Chúng tôi đã khám phá cách chúng tôi có thể sử dụng gói pq để kết nối và truy vấn cơ sở dữ liệu PostgreSQL bằng Golang.