العمل مع قواعد البيانات في Go: PostgreSQL و MongoDB للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع قواعد البيانات في Go: PostgreSQL و MongoDB للمبتدئين



Go (Golang) هي لغة مترجمة حديثة اكتسبت شعبية بفضل أدائها العالي وبساطتها ودعمها المدمج للتزامن. عند تطوير خدمات الويب والتطبيقات، تنشأ دائمًا الحاجة إلى التفاعل مع قواعد البيانات. في هذه المقالة، سننظر في كيفية العمل مع نظامي إدارة قواعد بيانات شائعين: PostgreSQL العلائقية و MongoDB الموجهة للمستندات. المادة موجهة للمطورين المبتدئين الذين هم على دراية بأساسيات Go.



1. إعداد البيئة وتثبيت برامج التشغيل



قبل البدء، تأكد من تثبيت Go (الإصدار 1.16+) وتشغيل أنظمة إدارة قواعد البيانات المناسبة. للعمل مع PostgreSQL، ستحتاج إلى برنامج التشغيل lib/pq، وبالنسبة لـ MongoDB، ستحتاج إلى برنامج التشغيل الرسمي mongo-go-driver.



go get github.com/lib/pqgo get go.mongodb.org/mongo-driver/mongo


أنشئ وحدة جديدة:



go mod init example.com/db-demo


2. العمل مع PostgreSQL في Go



PostgreSQL هي قاعدة بيانات علائقية قوية تدعم SQL. في Go، نستخدم الحزمة القياسية database/sql مع برنامج التشغيل lib/pq.



2.1 الاتصال بقاعدة البيانات



للاتصال، يجب تحديد سلسلة الاتصال (DSN) بالتنسيق: host=... port=... user=... password=... dbname=... sslmode=disable.



package main

import ( "database/sql" "fmt" "log" _ "github.com/lib/pq")

func main() { connStr := "host=localhost port=5432 user=postgres password=secret dbname=testdb sslmode=disable" db, err := sql.Open("postgres", connStr) if err != nil { log.Fatal(err) } defer db.Close()

err = db.Ping() if err != nil { log.Fatal("فشل الاتصال:", err) } fmt.Println("تم إنشاء الاتصال بـ PostgreSQL!")}


2.2 إنشاء جدول وعمليات CRUD



لننظر في إنشاء جدول users وتنفيذ العمليات الأساسية.



// إنشاء الجدولcreateTable := `CREATE TABLE IF NOT EXISTS users (    id SERIAL PRIMARY KEY,    name VARCHAR(100) NOT NULL,    email VARCHAR(100) UNIQUE NOT NULL,    age INT);`

_, err = db.Exec(createTable)if err != nil { log.Fatal(err)}

// إدراج البياناتsqlInsert := `INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING id`var userID interr = db.QueryRow(sqlInsert, "إيفان بيتروف", "ivan@example.com", 30).Scan(&userID)if err != nil { log.Fatal(err)}fmt.Printf("تمت إضافة مستخدم بالمعرف: %d", userID)

// استعلام البياناتrows, err := db.Query("SELECT id, name, email, age FROM users")if err != nil { log.Fatal(err)}defer rows.Close()

for rows.Next() { var u struct { ID int Name string Email string Age int } err := rows.Scan(&u.ID, &u.Name, &u.Email, &u.Age) if err != nil { log.Fatal(err) } fmt.Printf("المعرف: %d, الاسم: %s, البريد الإلكتروني: %s, العمر: %d", u.ID, u.Name, u.Email, u.Age)}


2.3 استخدام الاستعلامات المحضرة



الاستعلامات المحضرة (prepared statements) تزيد من الأمان والأداء، خاصة في العمليات المتكررة.



stmt, err := db.Prepare("UPDATE users SET age = $1 WHERE id = $2")if err != nil {    log.Fatal(err)}defer stmt.Close()

_, err = stmt.Exec(35, 1)if err != nil { log.Fatal(err)}fmt.Println("تم تحديث عمر المستخدم")


3. العمل مع MongoDB في Go



MongoDB هي قاعدة بيانات NoSQL موجهة للمستندات. في Go، يتم العمل معها من خلال برنامج التشغيل الرسمي mongo-go-driver، الذي يستخدم السياقات لإدارة وقت تنفيذ العمليات.



3.1 الاتصال بـ MongoDB



pa                

المدونات

توصيات الكتب