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

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

Το οικοσύστημα Go φιλοξενεί πολλά πακέτα για αλληλεπίδραση με διάφορα DBMS, συμπεριλαμβανομένου του Postgres. Το Go παρέχει το ενσωματωμένο βάση δεδομένων/sql πακέτο για εργασία με βάσεις δεδομένων SQL χρησιμοποιώντας προγράμματα οδήγησης βάσης δεδομένων. Χρησιμοποιώντας δομές δεδομένων Go, μπορείτε να ενσωματώσετε δημοφιλή ORM τρίτων, όπως το GORM για εύκολη αλληλεπίδραση με τη βάση δεδομένων σας.

instagram viewer

Ξεκινώντας με το GORM και το Postgres

Το πακέτο GORM είναι ένα από τα πιο δημοφιλή ORM στο οικοσύστημα Go επειδή είναι φιλικό προς προγραμματιστές, πλούσιο σε χαρακτηριστικά και βασίζεται σε ο βάση δεδομένων/sql πακέτο.

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

Εκτελέστε αυτήν την εντολή τερματικού στον κατάλογο εργασίας σας για να προσθέσετε το πακέτο GORM στις εξαρτήσεις του έργου σας:

πηγαίνω λάβετε gorm.io/gorm\n

Θα χρειαστείτε ένα πρόγραμμα οδήγησης βάσης δεδομένων για να δουλέψετε το πακέτο GORM. Το GORM παρέχει προγράμματα οδήγησης βάσης δεδομένων για δημοφιλή DBMS. Εκτελέστε αυτήν την εντολή στον κατάλογο εργασίας σας για να εγκαταστήσετε το GORM Postgres οδηγός:

πηγαίνω λάβετε gorm.io/driver/postgres\n

Σύνδεση Postgres με Go χρησιμοποιώντας GORM

Εισαγάγετε αυτά τα πακέτα στο αρχείο Go για να εργαστείτε με το πρόγραμμα οδήγησης ORM και βάσης δεδομένων. Θα χρησιμοποιήσετε το κούτσουρο πακέτο για την καταγραφή σφαλμάτων στην κονσόλα σας και το fmt πακέτο για έξοδο εκτύπωσης.

εισαγωγή (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "κούτσουρο"\n)\n

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

Ακολουθεί ένα παράδειγμα μοντέλου δομής για τα πεδία που αποτελούν τη συμβολοσειρά σύνδεσης:

τύπος Διαμόρφωση struct {\n Κεντρικός υπολογιστής σειρά\n Λιμάνι σειρά\n Κωδικός πρόσβασης σειρά\n Χρήστης σειρά\n Όνομα DB σειρά\n Λειτουργία SSL σειρά\n}\n

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

funcΝέαΣύνδεση()(* καταιγισμός. DB, σφάλμα) {\n ΕΠΙΣΤΡΟΦΗ db, μηδέν\n}\n

Μπορείτε να δημιουργήσετε το μοντέλο της δομής σύνδεσης και να συμπληρώσετε τα πεδία με τις τιμές στη βάση δεδομένων Postgres.

 configurations := Config{\n Host: "base_database_host",\n Λιμάνι: "Database_Port",\n Κωδικός πρόσβασης: "βάση δεδομένων_Κωδικός πρόσβασης",\n Χρήστης: "base_database_User",\n Όνομα DB: "όνομα βάσης δεδομένων",\n Λειτουργία SSL: "ψευδής",\n }\n dsn := fmt. Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", διαμορφώσεις. Κεντρικός υπολογιστής, διαμορφώσεις. Θύρα, διαμορφώσεις. Χρήστης, διαμορφώσεις. Κωδικός πρόσβασης, διαμορφώσεις. Όνομα DB, διαμορφώσεις. SSLMode)\n

ο dsn μεταβλητή χρησιμοποιεί το Sprintf μέθοδος μορφοποίησης και Μετάβαση σε ρήματα μορφοποίησης συμβολοσειράς να συνενώσει τα πεδία του Διαμόρφωση κατασκευάστε και ρυθμίστε τη συμβολοσειρά σύνδεσης Postgres.

Μπορείτε να ανοίξετε μια σύνδεση βάσης δεδομένων με το GORM χρησιμοποιώντας το Ανοιξε μέθοδος. ο Ανοιξε Η μέθοδος λαμβάνει μια ανοιχτή σύνδεση από ένα πρόγραμμα οδήγησης βάσης δεδομένων και μια λίστα προαιρετικών διαμορφώσεων από το Διαμόρφωση τύπο του πακέτου GORM. Επιστρέφει μια παρουσία σύνδεσης και ένα προαιρετικό σφάλμα.

 db, err := gorm. Ανοιχτό (postgres. Άνοιγμα (dsn), &gorm. Config{})\n αν λάθος!= μηδέν {\n ΕΠΙΣΤΡΟΦΗ db, err\n }\n

Πίνοντας στη βάση δεδομένων για επαλήθευση της κατάστασης σύνδεσης

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

funcPingDb()(bool, λάθος) {\n \n ΕΠΙΣΤΡΟΦΗαληθής, μηδέν\n}\n

Θα χρειαστεί να δημιουργήσετε μια νέα παρουσία σύνδεσης για να κάνετε ping στη βάση δεδομένων. Ακολουθεί ένα παράδειγμα χρησιμοποιώντας το ΝέαΣύνδεση λειτουργία για τη δημιουργία ενός στιγμιότυπου σύνδεσης:

 ConnectionInstance, err := NewConnection()\n αν λάθος!= μηδέν {\n αρχείο καταγραφής. Fatalf("Η σύνδεση της βάσης δεδομένων απέτυχε %v", λάθος. Σφάλμα())\n }\n

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

 dbConnection, err := connectionInstance. DB()\n αν λάθος!= μηδέν {\n ΕΠΙΣΤΡΟΦΗψευδής, err\n } \n

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

\n err = dbΣύνδεση. Ping()\n αν λάθος!= μηδέν {\n ΕΠΙΣΤΡΟΦΗψευδής, λάθος\n } αλλού {\n \n fmt. Println("Η σύνδεση ήταν επιτυχής")\n }\n

Μια επιτυχημένη εκτέλεση θα πρέπει να έχει αποτέλεσμα παρόμοιο με αυτό:

Μπορείτε να χρησιμοποιήσετε τη βάση δεδομένων/πακέτο sql για να εργαστείτε με τη βάση δεδομένων SQL στο Go

ο βάση δεδομένων/sql Το πακέτο είναι επεκτάσιμο και επειδή τα περισσότερα πακέτα και προγράμματα οδήγησης βάσεων δεδομένων Go επεκτείνουν το πακέτο, μπορείτε να χρησιμοποιήσετε το πακέτο στα έργα σας αντί να επιλέξετε ORM.

Το GORM παρέχει επίσης ένα πρόγραμμα δημιουργίας SQL για τη δημιουργία πρωτογενούς SQL, το οποίο είναι χρήσιμο για μη υποστηριζόμενες λειτουργίες.