Postgres Golang

Postgres Golang



המכונה לעתים קרובות Golang, Go היא שפת תכנות הינה בקוד פתוח, מקופלת ומוקלדת סטטית אשר נוצרת על ידי Google. זה בנוי להיות קל להבנה, מהיר, ברור ועם ביצועים גבוהים.

PostgreSQL, המכונה לעתים קרובות בפשטות Postgres, היא מערכת מסד נתונים רבת עוצמה, קוד פתוח ביחסי אובייקטים. עם יותר מ-30 שנות פיתוח פעיל, הוא צבר מוניטין חזק בזכות החוסן שלו, התכונות המתקדמות שלו ותאימות ניכרת לתקנים.

הוא נועד להתמודד עם עומסי העבודה הנרחבים, ממכונות בודדות ועד למחסני נתונים או שירותי אינטרנט עם משתמשים רבים במקביל. הוא מספק שלמות עסקה ועמידות ותומך בסוגי נתונים מתקדמים שונים ובשפת מניפולציה חזקה וגמישה של נתונים.







מדריך זה מלמד אותנו כיצד להגדיר ולחבר שרת PostgreSQL עם יישום Go.



דרישות:

עבור לשפת תכנות - זה מבטיח שהמהדר Go מותקן במחשב שלך.



מסד נתונים PostgreSQL - אתה צריך גם להתקין את PostgreSQL. אתה יכול להתקין אותו ישירות על המחשב שלך או להשתמש במיכל Docker להגדרה פשוטה יותר.





כלי פיתוח – סביבת פיתוח משולבת (IDE) התומכת ב-Go כמו Visual Studio Code, GoLand וכו'.

ידע בסיסי ב-SQL ו-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 -IN postgres

פקודה זו מבקשת ממך להזין את הסיסמה של ה-postgres. לאחר שנרשמת, הפעל את הפקודה 'צור מסד נתונים' כדי לאתחל מסד נתונים חדש:

postgres=# צור מסד נתונים golang;
צור מסד נתונים

הפקודה הנתונה יוצרת מסד נתונים חדש בשם 'גולאנג'. אל תהסס להחליף את שם מסד הנתונים בשם הרצוי.

לאחר מכן תוכל לוודא שמסד הנתונים נוצר בהצלחה על ידי התחברות אליו.

postgres=# \c golang;
כעת אתה מחובר למסד הנתונים 'golang' בתור משתמש 'postgres'.

לאחר מכן, הגדר את הטבלה שבה ברצונך לאחסן את הנתונים. אנו יוצרים טבלה פשוטה עבור הדרכה זו המאחסנת את מידע הפגישה.

CREATE TABLE db_clients (
id SERIAL PRIMARY KEY,
שם VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
מספר_של_שאילתות INT Default 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.Open ( 'פוסטגרס' , connStr )
אם לִטְעוֹת ! = אפס {
log.Fatal ( לִטְעוֹת )
}

אם שגיאה = db.Ping ( ) ; לִטְעוֹת ! = אפס {
log.Fatal ( לִטְעוֹת )
}

fmt.Println ( 'מחובר למסד נתונים' )
}

בקוד הקודם, אנו מתחילים בייבוא ​​המודולים הנדרשים. לאחר מכן נגדיר את הפונקציה הראשית. לבסוף, בפונקציה הראשית, אנו מגדירים את מחרוזת החיבור המאפשרת לנו לציין את מארח היעד, משתמש מסד הנתונים, סיסמת מסד הנתונים ומסד הנתונים בפועל.

המודול תומך בפרמטרים הבאים במחרוזת החיבור:

  • dbname - שם מסד הנתונים שאליו יש להתחבר.
  • משתמש - המשתמש שאליו יש להיכנס.
  • סיסמה - סיסמת המשתמש.
  • מארח - המארח שאליו יש להתחבר. הערכים שמתחילים ב-'/' הם עבור שקעי תחום Unix (ברירת המחדל היא localhost).
  • port - היציאה שאליה יש לאגד (ברירת המחדל היא 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 הכנס נתונים לטבלה

השלב הבא הוא להכניס את הנתונים לדוגמה לטבלה שיצרנו קודם לכן. נוכל לעשות זאת על ידי הגדרת שאילתות ה-insert כ-string literal ולאחר מכן להשתמש בפונקציה db.Exec() כדי להפעיל את שאילתת היעד.

הקוד הוא כדלקמן:

---
insertStatement := `INSERT INTO db_clients (name, session_time, number_of_queries, active_state)
ערכים
('psql', '2023-05-26 10:15:00', 10, נכון),
('datagrip', '2023-05-26 09:30:00', 5, נכון),
('dbeaver', '2023-05-26 11:00:00', 20, נכון),
('שולחן עבודה', '2023-05-26 14:45:00', 15, שקר),
('remote', '2023-05-26 13:20:00', 8, true);'

_, err = db.Exec(insertStatement)
אם שגיאה != אפס {
log.Fatal(err)
}

אם אתה מפעיל את הקוד הקודם, הוא אמור להכניס את הרשומות שצוינו לטבלת היעד.

נתוני שאילתות PostgreSQL

כדי לבצע שאילתות על השורות מהטבלה, נוכל להגדיר את הצהרת select כמחרוזת ולהשתמש ב-db.Query() כדי להפעיל אותה. אנו יכולים לחזור על שורות הטבלה באמצעות הפונקציה Next() ולהדפיס אותן כפי שמוצג להלן:

שורות, שגיאה := db.Query ( 'SELECT * FROM db_clients' )
אם לִטְעוֹת ! = אפס {
log.Fatal ( לִטְעוֹת )
}
דחיית שורות.סגור ( )

ל שורות.הבא ( ) {
היה תְעוּדַת זֶהוּת int
מחרוזת שם var
var sessionTime time.Time
var numberOfQueries int
var activeState bool

שגיאה := שורות. סריקה ( & תְעוּדַת זֶהוּת , & שֵׁם, & זמן הפעלה, & numberOfQueries, & activeState )
אם לִטְעוֹת ! = אפס {
log.Fatal ( לִטְעוֹת )
}

fmt.Printf ( 'מזהה: %d, שם: %s, זמן הפעלה: %s, מספר שאילתות: %d, מצב פעיל: %t \n ' , תְעוּדַת זֶהוּת , name, sessionTime, numberOfQueries, activeState )
}

אם שגיאה = שורות. שגיאה ( ) ; לִטְעוֹת ! = אפס {
log.Fatal ( לִטְעוֹת )
}

ברגע שנפעיל את הקוד הקודם, הוא אמור להדפיס את כל השורות מטבלת db_clients כפי שמוצג בדוגמה הבאה:

הנה לך!

סיכום

בדקנו כיצד אנו יכולים להשתמש בחבילת pq כדי להתחבר ולשאול את מסד הנתונים PostgreSQL באמצעות Golang.