Postgres Golang

Postgres Golang



Συχνά αναφέρεται ως Golang, η Go είναι μια γλώσσα προγραμματισμού ανοιχτού κώδικα, μεταγλωττισμένη και στατικά πληκτρολογημένη που δημιουργείται από την Google. Είναι φτιαγμένο για να είναι κατανοητό, γρήγορο, σαφές και υψηλής απόδοσης.

Το PostgreSQL, που συχνά αναφέρεται απλώς ως Postgres, είναι ένα ισχυρό, ανοιχτού κώδικα αντικειμενο-σχεσιακό σύστημα βάσης δεδομένων. Με περισσότερα από 30 χρόνια ενεργού ανάπτυξης, έχει αποκτήσει ισχυρή φήμη για τη στιβαρότητα, τα προηγμένα χαρακτηριστικά και την ουσιαστική συμμόρφωσή του με τα πρότυπα.

Έχει σχεδιαστεί για να χειρίζεται εκτεταμένους φόρτους εργασίας, από μεμονωμένα μηχανήματα έως αποθήκες δεδομένων ή υπηρεσίες web με πολλούς ταυτόχρονους χρήστες. Παρέχει ακεραιότητα και ανθεκτικότητα συναλλαγών και υποστηρίζει διάφορους προηγμένους τύπους δεδομένων και ισχυρή, ευέλικτη γλώσσα χειρισμού δεδομένων.







Αυτό το σεμινάριο μας διδάσκει πώς να ρυθμίσουμε και να συνδέσουμε έναν διακομιστή PostgreSQL με μια εφαρμογή Go.



Απαιτήσεις:

Γλώσσα προγραμματισμού Go – Διασφαλίζει ότι ο μεταγλωττιστής Go είναι εγκατεστημένος στον υπολογιστή σας.



Βάση δεδομένων PostgreSQL – Πρέπει επίσης να έχετε εγκαταστήσει την PostgreSQL. Μπορείτε να το εγκαταστήσετε απευθείας στο μηχάνημά σας ή να χρησιμοποιήσετε ένα κοντέινερ Docker για πιο απλή εγκατάσταση.





Εργαλεία ανάπτυξης – Ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) που υποστηρίζει Go like Visual Studio Code, GoLand κ.λπ.

Βασική γνώση SQL and Go – Για να αλληλεπιδράσετε με τη βάση δεδομένων PostgreSQL, πρέπει να κατανοήσετε την SQL και τα διάφορα ερωτήματα που πρέπει να πραγματοποιήσετε. Χρειάζεστε επίσης μια βασική κατανόηση της γλώσσας Go.



Εφόσον πληρούνται οι δεδομένες απαιτήσεις, μπορούμε να προχωρήσουμε στα παρακάτω βήματα.

Ρύθμιση έργου

Ας ξεκινήσουμε ρυθμίζοντας τη δομή του καταλόγου του έργου μας. Δημιουργήστε τον κύριο κατάλογο όπου πρέπει να αποθηκεύσετε τον πηγαίο κώδικα του έργου.

$ mkdir golang_postgres

Πλοηγηθείτε στον κατάλογο και αρχικοποιήστε μια νέα ενότητα Go.

$ CD golang_postgres && go mod init main

Εγκαταστήστε τα απαιτούμενα προγράμματα οδήγησης

Για να αλληλεπιδράσουμε με τη βάση δεδομένων PostgreSQL, χρειαζόμαστε ένα πρόγραμμα οδήγησης PostgreSQL για τη γλώσσα προγραμματισμού Go.

Για αυτό το σεμινάριο, χρησιμοποιούμε το πρόγραμμα οδήγησης pq που προσφέρει ένα ευρύ φάσμα δυνατοτήτων για εργασία με τη βάση δεδομένων PostgreSQL.

Μπορείτε να το εγκαταστήσετε εκτελώντας την ακόλουθη εντολή:

πηγαίνετε να πάρετε το github.com / lib / pq

Δημιουργήστε μια βάση δεδομένων

Το επόμενο βήμα είναι να δημιουργήσετε μια νέα βάση δεδομένων PostgreSQL. Και πάλι, μπορούμε να το κάνουμε αυτό στο κέλυφος PostgreSQL.

$ psql -ΣΕ postgres

Αυτή η εντολή σας ζητά τον κωδικό πρόσβασης του postgres. Μόλις συνδεθείτε, εκτελέστε την εντολή 'create database' για να αρχικοποιήσετε μια νέα βάση δεδομένων:

postgres=# δημιουργία βάσης δεδομένων golang;
ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ

Η εντολή που δίνεται δημιουργεί μια νέα βάση δεδομένων που ονομάζεται 'golang'. Μη διστάσετε να αντικαταστήσετε το όνομα της βάσης δεδομένων με το όνομα που επιθυμείτε.

Στη συνέχεια, μπορείτε να επαληθεύσετε ότι η βάση δεδομένων έχει δημιουργηθεί με επιτυχία συνδέοντας σε αυτήν.

postgres=# \c golang;
Είστε πλέον συνδεδεμένοι στη βάση δεδομένων 'golang' ως χρήστης 'postgres'.

Στη συνέχεια, ορίστε τον πίνακα στον οποίο θέλετε να αποθηκεύσετε τα δεδομένα. Δημιουργούμε έναν απλό πίνακα για αυτό το σεμινάριο που αποθηκεύει τις πληροφορίες συνεδρίας.

CREATE TABLE db_clients (
Αναγνωριστικό ΣΕΙΡΙΚΟ ΚΥΡΙΟ ΚΛΕΙΔΙ,
όνομα VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
number_of_queries ΠΡΟΕΠΙΛΟΓΗ 0,
active_state BOOLEAN DEFAULT FALSE
)

Το συγκεκριμένο ερώτημα θα πρέπει να δημιουργήσει έναν νέο πίνακα που ονομάζεται 'db_clients' που αποθηκεύει πληροφορίες σχετικά με τους πελάτες που είναι συνδεδεμένοι σε έναν δεδομένο διακομιστή βάσης δεδομένων.

Συνδέστε την εφαρμογή Go με την PostgreSQL

Μόλις ρυθμίσουμε τη βάση δεδομένων και τον πίνακα βάσης δεδομένων, μπορούμε να προχωρήσουμε και να μάθουμε πώς να συνδέσουμε την εφαρμογή Go με τον διακομιστή PostgreSQL.

Ξεκινήστε δημιουργώντας ένα αρχείο 'main.go' στη ρίζα του έργου σας:

$ αφή main.go

Στη συνέχεια, επεξεργαστείτε το αρχείο με τον επεξεργαστή κειμένου της επιλογής σας:

$ επειδή main.go

Στο αρχείο 'main.go', προσθέστε τον πηγαίο κώδικα όπως φαίνεται παρακάτω:

κύριο πακέτο

εισαγωγή (
'βάση δεδομένων/sql'
'fmt'
'κούτσουρο'

_ 'github.com/lib/pq'
)

func main ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Άνοιγμα ( 'postgres' , connStr )
αν πλανώμαι ! = μηδέν {
log.Μοιραία ( πλανώμαι )
}

αν err = db.Ping ( ) ; πλανώμαι ! = μηδέν {
log.Μοιραία ( πλανώμαι )
}

fmt.Println ( 'Σύνδεση με βάση δεδομένων' )
}

Στον προηγούμενο κώδικα, ξεκινάμε εισάγοντας τις απαιτούμενες ενότητες. Στη συνέχεια ορίζουμε την κύρια συνάρτηση. Τέλος, στην κύρια συνάρτηση, ορίζουμε τη συμβολοσειρά σύνδεσης που μας επιτρέπει να καθορίσουμε τον κεντρικό υπολογιστή-στόχο, τον χρήστη της βάσης δεδομένων, τον κωδικό πρόσβασης βάσης δεδομένων και την πραγματική βάση δεδομένων προορισμού.

Η μονάδα υποστηρίζει τις ακόλουθες παραμέτρους στη συμβολοσειρά σύνδεσης:

  • dbname – Το όνομα της βάσης δεδομένων στην οποία θα συνδεθείτε.
  • χρήστης – Ο χρήστης για είσοδο ως.
  • κωδικός πρόσβασης – Ο κωδικός πρόσβασης χρήστη.
  • host – Ο κεντρικός υπολογιστής στον οποίο θα συνδεθείτε. Οι τιμές που ξεκινούν με '/' είναι για υποδοχές τομέα Unix (η προεπιλογή είναι localhost).
  • θύρα – Η θύρα προς σύνδεση (η προεπιλογή είναι 5432).
  • sslmode – Αν θα χρησιμοποιηθεί ή όχι SSL (η προεπιλογή είναι υποχρεωτική, αυτή δεν είναι η προεπιλογή για το libpq).
  • fallback_application_name – Ένα όνομα_εφαρμογής στο οποίο επιστρέφετε εάν δεν παρέχεται.
  • connect_timeout – Η μέγιστη αναμονή για σύνδεση σε δευτερόλεπτα. Μηδενικό ή μη καθορισμένο σημαίνει να περιμένετε επ' αόριστον.
  • sslcert – Η θέση του αρχείου πιστοποιητικού. Το αρχείο πρέπει να περιέχει τα δεδομένα με κωδικοποίηση PEM.
  • sslkey – Η θέση του αρχείου κλειδιού. Το αρχείο πρέπει να περιέχει τα δεδομένα με κωδικοποίηση PEM.
  • sslrootcert – Η θέση του αρχείου πιστοποιητικού ρίζας. Το αρχείο πρέπει να περιέχει τα δεδομένα με κωδικοποίηση PEM.

Μπορείτε να διαμορφώσετε τις ιδιότητες σύνδεσης προορισμού όπως απαιτείται. Για να διαμορφώσετε το SSL και τις αποδεκτές παραμέτρους SSLMode, ελέγξτε το σεμινάριο μας https://linuxhint.com/postgres-sslmode .

Αφού είστε ικανοποιημένοι με τις ιδιότητες σύνδεσης, μπορείτε να εκτελέσετε τον προηγούμενο κώδικα για να ελέγξετε εάν η σύνδεση έχει δημιουργηθεί.

πήγαινε τρέξε .\main.go

Κατά τη σύνδεση, θα πρέπει να λάβετε την ακόλουθη έξοδο:

Συνδέθηκε στη βάση δεδομένων

PostgreSQL Εισαγάγετε δεδομένα στον πίνακα

Το επόμενο βήμα είναι να εισαγάγετε τα δείγματα δεδομένων στον πίνακα που δημιουργήσαμε νωρίτερα. Μπορούμε να το κάνουμε αυτό ορίζοντας τα ερωτήματα εισαγωγής ως κυριολεκτικά συμβολοσειράς και στη συνέχεια χρησιμοποιούμε τη συνάρτηση db.Exec() για να εκτελέσουμε το ερώτημα προορισμού.

Ο κωδικός είναι ο εξής:

---
insertStatement := `INSERT INTO db_clients (όνομα, session_time, number_of_queries, active_state)
ΑΞΙΕΣ
('psql', '26-05-2023 10:15:00', 10, true)
('datagrip', '26-05-2023 09:30:00', 5, true)
('dbeaver', '26-05-2023 11:00:00', 20, true)
('πάγκος εργασίας', '26-05-2023 14:45:00', 15, ψευδής)
('απομακρυσμένο', '26-05-2023 13:20:00', 8, αληθινό)'

_, err = db.Exec(insertStatement)
αν λάθος != μηδέν {
log.Fatal(err)
}

Εάν εκτελέσετε τον προηγούμενο κώδικα, θα πρέπει να εισάγει τις καθορισμένες εγγραφές στον πίνακα προορισμού.

Δεδομένα ερωτημάτων PostgreSQL

Για να υποβάλουμε ερώτημα στις σειρές από τον πίνακα, μπορούμε να ορίσουμε τη δήλωση select ως συμβολοσειρά και να χρησιμοποιήσουμε την db.Query() για να την εκτελέσουμε. Μπορούμε να επαναλάβουμε τις σειρές του πίνακα χρησιμοποιώντας τη συνάρτηση Next() και να τις εκτυπώσουμε όπως φαίνεται παρακάτω:

rows, err := db.Query ( 'SELECT * FROM db_clients' )
αν πλανώμαι ! = μηδέν {
log.Μοιραία ( πλανώμαι )
}
αναβολή σειρών.Κλείσιμο ( )

Για σειρές.Επόμενο ( ) {
ήταν ταυτότητα ενθ
συμβολοσειρά ονόματος var
var sessionTime time.Time
var numberOfQueries int
var activeState bool

err := σειρές.Σάρωση ( & ταυτότητα , & όνομα, & Ώρα συνεδρίας, & numberOfQueries, & ενεργό κράτος )
αν πλανώμαι ! = μηδέν {
log.Μοιραία ( πλανώμαι )
}

fmt.Εκτύπωση ( 'ID: %d, Όνομα: %s, Χρόνος συνεδρίας: %s, Αριθμός ερωτημάτων: %d, Ενεργή κατάσταση: %t \n ' , ταυτότητα , όνομα, sessionTime, numberOfQueries, activeState )
}

αν err = σειρές.Err ( ) ; πλανώμαι ! = μηδέν {
log.Μοιραία ( πλανώμαι )
}

Μόλις εκτελέσουμε τον προηγούμενο κώδικα, θα πρέπει να εκτυπώσει όλες τις σειρές από τον πίνακα db_clients όπως φαίνεται στο ακόλουθο παράδειγμα εξόδου:

Ορίστε το!

συμπέρασμα

Εξερευνήσαμε πώς μπορούμε να χρησιμοποιήσουμε το πακέτο pq για να συνδέσουμε και να ρωτήσουμε τη βάση δεδομένων PostgreSQL χρησιμοποιώντας Golang.