โพสเกรส โกแลง

Pho S Ke Rs Ko Laeng



Go มักจะถูกเรียกว่า Golang เป็นภาษาโปรแกรมที่เป็นโอเพ่นซอร์ส คอมไพล์ และพิมพ์แบบสแตติกซึ่งสร้างโดย Google สร้างขึ้นเพื่อให้เข้าใจง่าย รวดเร็ว ชัดเจน และมีประสิทธิภาพสูง

PostgreSQL หรือที่เรียกง่ายๆ ว่า Postgres เป็นระบบฐานข้อมูลเชิงวัตถุแบบโอเพ่นซอร์สที่มีประสิทธิภาพ ด้วยการพัฒนาอย่างแข็งขันมากว่า 30 ปี ทำให้ได้รับชื่อเสียงที่แข็งแกร่งในด้านความทนทาน คุณสมบัติขั้นสูง และการปฏิบัติตามมาตรฐานที่สำคัญ

ได้รับการออกแบบมาเพื่อจัดการกับเวิร์กโหลดจำนวนมาก ตั้งแต่เครื่องเดียวไปจนถึงคลังข้อมูลหรือบริการบนเว็บที่มีผู้ใช้พร้อมกันจำนวนมาก ให้ความสมบูรณ์ของการทำธุรกรรมและความทนทาน และรองรับประเภทข้อมูลขั้นสูงต่างๆ และภาษาการจัดการข้อมูลที่ทรงพลังและยืดหยุ่น







บทช่วยสอนนี้สอนเราถึงวิธีกำหนดค่าและเชื่อมต่อเซิร์ฟเวอร์ PostgreSQL กับแอปพลิเคชัน Go



ความต้องการ:

ไปการเขียนโปรแกรมภาษา – ตรวจสอบให้แน่ใจว่ามีการติดตั้งคอมไพเลอร์ Go บนเครื่องของคุณ



ฐานข้อมูล PostgreSQL – คุณต้องติดตั้ง PostgreSQL ด้วย คุณสามารถติดตั้งได้โดยตรงบนเครื่องของคุณหรือใช้คอนเทนเนอร์ Docker เพื่อการตั้งค่าที่ตรงไปตรงมามากขึ้น





เครื่องมือในการพัฒนา – Integrated Development Environment (IDE) ที่รองรับ Go เช่น Visual Studio Code, GoLand เป็นต้น

ความรู้พื้นฐานของ SQL และ Go – ในการโต้ตอบกับฐานข้อมูล PostgreSQL คุณต้องเข้าใจ SQL และคำสั่งต่างๆ ที่คุณต้องดำเนินการ คุณต้องมีความเข้าใจพื้นฐานของภาษา Go



เมื่อตรงตามข้อกำหนดที่กำหนด เราสามารถดำเนินการตามขั้นตอนต่อไปนี้

การตั้งค่าโครงการ

ให้เราเริ่มต้นด้วยการตั้งค่าโครงสร้างไดเร็กทอรีโครงการของเรา สร้างไดเร็กทอรีหลักที่คุณต้องการจัดเก็บซอร์สโค้ดของโครงการ

$ มคเดียร์ golang_postgres

ไปที่ไดเร็กทอรีและเริ่มต้นโมดูล Go ใหม่

$ ซีดี golang_postgres && ไป mod เริ่มต้นหลัก

ติดตั้งไดรเวอร์ที่จำเป็น

ในการโต้ตอบกับฐานข้อมูล PostgreSQL เราจำเป็นต้องมีไดรเวอร์ PostgreSQL สำหรับภาษาโปรแกรม Go

สำหรับบทช่วยสอนนี้ เราใช้ไดรเวอร์ pq ซึ่งมีคุณลักษณะมากมายเพื่อทำงานร่วมกับฐานข้อมูล PostgreSQL

คุณสามารถติดตั้งได้โดยใช้คำสั่งต่อไปนี้:

ไปที่ github.com / lib / พีคิว

สร้างฐานข้อมูล

ขั้นตอนต่อไปคือการสร้างฐานข้อมูล PostgreSQL ใหม่ เราสามารถทำได้อีกครั้งในเปลือก PostgreSQL

$ psql -ใน โพสต์เกรส

คำสั่งนี้แจ้งให้คุณใส่รหัสผ่านของ postgres เมื่อบันทึกแล้ว ให้รันคำสั่ง 'สร้างฐานข้อมูล' เพื่อเริ่มต้นฐานข้อมูลใหม่:

postgres=# สร้างฐานข้อมูล golang;
สร้างฐานข้อมูล

คำสั่งที่กำหนดสร้างฐานข้อมูลใหม่ชื่อ 'golang' อย่าลังเลที่จะแทนที่ชื่อฐานข้อมูลด้วยชื่อที่คุณต้องการ

จากนั้นคุณสามารถตรวจสอบได้ว่าสร้างฐานข้อมูลสำเร็จโดยการเชื่อมต่อกับฐานข้อมูลนั้น

postgres=# \c golang;
ขณะนี้คุณเชื่อมต่อกับฐานข้อมูล 'golang' ในฐานะผู้ใช้ 'postgres'

ถัดไป ตั้งค่าตารางที่คุณต้องการเก็บข้อมูล เราสร้างตารางอย่างง่ายสำหรับบทช่วยสอนนี้ที่เก็บข้อมูลเซสชัน

สร้างตาราง db_clients (
รหัสซีเรียลคีย์หลัก
ชื่อ VARCHAR (100) ไม่เป็นโมฆะ
session_time การประทับเวลาไม่เป็นโมฆะ
number_of_queries INT เริ่มต้น 0,
active_state บูลีนเริ่มต้นเป็นเท็จ
);

ข้อความค้นหาที่กำหนดควรสร้างตารางใหม่ชื่อ “db_clients” ที่เก็บข้อมูลเกี่ยวกับไคลเอนต์ที่ล็อกอินเข้าสู่เซิร์ฟเวอร์ฐานข้อมูลที่กำหนด

เชื่อมต่อ Go App กับ PostgreSQL

เมื่อเราตั้งค่าฐานข้อมูลและตารางฐานข้อมูลแล้ว เราสามารถดำเนินการต่อและเรียนรู้วิธีเชื่อมต่อแอปพลิเคชัน Go กับเซิร์ฟเวอร์ PostgreSQL

เริ่มต้นด้วยการสร้างไฟล์ “main.go” ในรูทของโปรเจ็กต์ของคุณ:

$ สัมผัส main.go

ถัดไป แก้ไขไฟล์ด้วยโปรแกรมแก้ไขข้อความที่คุณเลือก:

$ เพราะ main.go

ในไฟล์ “main.go” ให้เพิ่มซอร์สโค้ดดังที่แสดงต่อไปนี้:

แพคเกจหลัก

นำเข้า (
'ฐานข้อมูล/sql'
'เอฟเอ็มที'
'บันทึก'

_ 'github.com/lib/pq'
)

ฟังก์ชั่นหลัก ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, ข้อผิดพลาด := sql.Open ( 'โพสเกรส' , connStr )
ถ้า ผิดพลาด ! = ไม่มี {
เข้าสู่ระบบร้ายแรง ( ผิดพลาด )
}

ถ้า ข้อผิดพลาด = db.Ping ( ) ; ผิดพลาด ! = ไม่มี {
เข้าสู่ระบบร้ายแรง ( ผิดพลาด )
}

fmt.Println ( 'เชื่อมต่อกับฐานข้อมูล' )
}

ในโค้ดก่อนหน้านี้ เราเริ่มต้นด้วยการนำเข้าโมดูลที่จำเป็น จากนั้นเรากำหนดฟังก์ชั่นหลัก สุดท้าย ในฟังก์ชันหลัก เรากำหนดสตริงการเชื่อมต่อซึ่งอนุญาตให้เราระบุโฮสต์เป้าหมาย ผู้ใช้ฐานข้อมูล รหัสผ่านฐานข้อมูล และฐานข้อมูลเป้าหมายจริง

โมดูลรองรับพารามิเตอร์ต่อไปนี้ในสตริงการเชื่อมต่อ:

  • dbname – ชื่อของฐานข้อมูลที่จะเชื่อมต่อ
  • ผู้ใช้ – ผู้ใช้ที่จะลงชื่อเข้าใช้เป็น
  • รหัสผ่าน – รหัสผ่านของผู้ใช้
  • โฮสต์ – โฮสต์ที่จะเชื่อมต่อ ค่าที่ขึ้นต้นด้วย “/” สำหรับซ็อกเก็ตโดเมน Unix (ค่าเริ่มต้นคือ localhost)
  • พอร์ต – พอร์ตที่จะเชื่อมโยง (ค่าเริ่มต้นคือ 5432)
  • sslmode – จะใช้ SSL หรือไม่ (ค่าดีฟอลต์คือต้องการ ซึ่งไม่ใช่ค่าดีฟอลต์สำหรับ libpq)
  • fallback_application_name – 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', '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, เท็จ),
('ระยะไกล', '2023-05-26 13:20:00', 8, จริง);`

_, ข้อผิดพลาด = db.Exec (insertStatement)
ถ้าผิดพลาด != ไม่มี {
log.Fatal(ผิดพลาด)
}

หากคุณเรียกใช้รหัสก่อนหน้านี้ ควรแทรกระเบียนที่ระบุลงในตารางเป้าหมาย

ข้อมูลแบบสอบถาม PostgreSQL

ในการสอบถามแถวจากตาราง เราสามารถกำหนดคำสั่ง select เป็นสตริงและใช้ db.Query() เพื่อเรียกใช้ เราสามารถวนซ้ำแถวของตารางได้โดยใช้ฟังก์ชัน Next() และพิมพ์ออกมาดังที่แสดงต่อไปนี้:

แถว ข้อผิดพลาด := db.Query ( 'เลือก * จาก db_clients' )
ถ้า ผิดพลาด ! = ไม่มี {
เข้าสู่ระบบร้ายแรง ( ผิดพลาด )
}
เลื่อนแถวปิด ( )

สำหรับ แถวถัดไป ( ) {
เคยเป็น รหัส นานาชาติ
สตริงชื่อ var
var sessionTime เวลา เวลา
var numberOfQuery int
var บูล activeState

ข้อผิดพลาด := rows.Scan ( & รหัส , & ชื่อ, & เซสชันไทม์, & จำนวนแบบสอบถาม, & แอคทีฟสเตท )
ถ้า ผิดพลาด ! = ไม่มี {
เข้าสู่ระบบร้ายแรง ( ผิดพลาด )
}

fmt.Printf ( 'ID: %d, ชื่อ: %s, เวลาเซสชัน: %s, จำนวนข้อความค้นหา: %d, สถานะใช้งาน: %t \n ' , รหัส , ชื่อ, sessionTime, numberOfQuerys, activeState )
}

ถ้า err = แถว ข้อผิดพลาด ( ) ; ผิดพลาด ! = ไม่มี {
เข้าสู่ระบบร้ายแรง ( ผิดพลาด )
}

เมื่อเราเรียกใช้โค้ดก่อนหน้านี้ ควรพิมพ์แถวทั้งหมดจากตาราง db_clients ตามที่แสดงในเอาต์พุตตัวอย่างต่อไปนี้:

คุณมีมัน!

บทสรุป

เราได้ศึกษาวิธีใช้แพ็คเกจ pq เพื่อเชื่อมต่อและค้นหาฐานข้อมูล PostgreSQL โดยใช้ Golang