خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

با GORM به یک پایگاه داده Postgres در برنامه Go خود متصل شوید

Go plus ORM برابر با GORM است! نحوه راه اندازی این بسته بندی پایگاه داده مفید را بیاموزید.

Postgres یکی از پایگاه های داده محبوب SQL به دلیل ویژگی های فراوان و سهولت استفاده است. Postgres با ویژگی‌هایی مانند کنترل همزمانی چند نسخه، تکرار غیرهمگام، تراکنش‌های تودرتو، و ثبت پیش‌نویس مطابق با ACID است. همراه با بسیاری دیگر، این ویژگی ها Postgres را به سیستم مدیریت پایگاه داده SQL تبدیل می کند.

اکوسیستم Go خانه بسته های بسیاری برای تعامل با DBMS های مختلف از جمله Postgres است. Go بسته داخلی پایگاه داده/sql را برای کار با پایگاه های داده SQL با استفاده از درایورهای پایگاه داده ارائه می دهد. با استفاده از ساختارهای داده Go، می توانید ORM های شخص ثالث محبوب مانند GORM را برای تعامل آسان با پایگاه داده خود ادغام کنید.

شروع کار با GORM و Postgres

صفحه اصلی GORM

بسته GORM یکی از محبوب‌ترین ORM‌ها در اکوسیستم Go است، زیرا توسعه‌دهنده پسند، ویژگی‌های غنی است و بر روی بسته پایگاه داده/sql ساخته می‌شود.

GORM عملکردی را برای انتقال خودکار، ثبت گزارش، بیانیه های آماده، تراکنش ها و اشتراک گذاری فراهم می کند. این بسته رویکرد کد اول را با استفاده از ساختارها و دیگر انواع داده های داخلی اتخاذ می کند.

این دستور ترمینال را در فهرست کاری خود اجرا کنید تا بسته GORM را به وابستگی های پروژه خود اضافه کنید:

go get gorm.io/gorm\n

برای کار با بسته GORM به درایور پایگاه داده نیاز دارید. GORM درایورهای پایگاه داده را برای DBMS های محبوب فراهم می کند. این دستور را در پوشه کاری خود اجرا کنید تا درایور GORM Postgres را نصب کنید:

مطلب مرتبط:   آموزش استفاده از ساختارها در سی شارپ

go get gorm.io/driver/postgres\n

اتصال Postgres با Go با استفاده از GORM

این بسته ها را در فایل Go خود وارد کنید تا با درایور ORM و پایگاه داده کار کنید. شما از بسته log برای ثبت خطاها در کنسول خود و از بسته fmt برای چاپ خروجی استفاده خواهید کرد.

import (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "log"\n)\n

برای اتصال به پایگاه داده Postgres خود در محیط در حال اجرا به یک رشته اتصال نیاز دارید. می توانید از یک ساختار به عنوان مدل برای فیلدهایی که رشته اتصال را تشکیل می دهند استفاده کنید. استفاده از ساختار تغییر و آزمایش مقادیر مختلف را به خصوص در موارد تزریق وابستگی آسان تر می کند.

در اینجا یک مدل ساختار نمونه برای فیلدهایی که رشته اتصال را تشکیل می دهند آورده شده است:

type Config struct {\n Host string\n Port string\n Password string\n User string\n DBName string\n SSLMode string\n}\n

در زیر یک تابع معمولی برای اتصال پایگاه داده شما آمده است. بسته به وضعیت اتصال، نمونه اتصال و یک خطا را برمی گرداند.

func NewConnection() (*gorm.DB, error) {\n return db, nil\n}\n

می توانید مدل ساختار اتصال را نمونه سازی کنید و فیلدها را با مقادیر موجود در پایگاه داده Postgres خود پر کنید.

    configurations := Config{\n Host: "database_Host",\n Port: "database_Port",\n Password: "database_Password",\n User: "database_User",\n DBName: "database_Name",\n SSLMode: "false",\n }\n dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", configurations.Host, configurations.Port, configurations.User, configurations.Password, configurations.DBName, configurations.SSLMode)\n

متغیر dsn از روش قالب‌بندی Sprintf و افعال قالب‌بندی رشته Go برای به هم پیوستن فیلدهای ساختار Config و راه‌اندازی رشته اتصال Postgres استفاده می‌کند.

مطلب مرتبط:   راهنمای مبتدیان برای شروع کار با جنگو

می توانید با استفاده از روش Open یک اتصال پایگاه داده با GORM باز کنید. روش Open یک اتصال باز از درایور پایگاه داده و لیستی از تنظیمات اختیاری را از نوع Config بسته GORM می گیرد. یک نمونه اتصال و یک خطای اختیاری را برمی گرداند.

    db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})\n if err != nil {\n return db, err\n }\n

پینگ کردن پایگاه داده برای تأیید وضعیت اتصال

می توانید پایگاه داده خود را برای تأیید وضعیت سلامت/آنلاین با تابعی پینگ کنید که در صورت نامعتبر بودن اتصال پایگاه داده، یک نتیجه بولی یا یک خطا را برمی گرداند.

func PingDb() (bool, error) {\n \n return true, nil\n}\n

برای پینگ کردن پایگاه داده باید یک نمونه اتصال جدید ایجاد کنید. در اینجا یک مثال با استفاده از تابع NewConnection برای ایجاد یک نمونه اتصال آورده شده است:

    connectionInstance, err := NewConnection()\n if err != nil {\n log.Fatalf("The database connection failed %v", err.Error())\n }\n

هنگامی که یک نمونه اتصال به دست آوردید، یک نمونه پایگاه داده با روش DB اتصال ایجاد کنید.

    dbConnection, err := connectionInstance.DB()\n if err != nil {\n return false, err\n } \n

می توانید با روش پینگ نمونه پایگاه داده پایگاه داده را پینگ کنید. در صورت موفقیت آمیز بودن اتصال، روش Ping هرگونه خطا یا صفر را برمی گرداند.

\n err = dbConnection.Ping()\n if err != nil {\n return false, err\n } else {\n \n fmt.Println("The connection was successful")\n }\n

یک اجرای موفقیت آمیز باید خروجی مشابه این داشته باشد:

خروجی اتصال موفق

می توانید از پایگاه داده/بسته sql برای کار با پایگاه داده SQL در Go استفاده کنید

بسته پایگاه داده/sql قابل تمدید است و از آنجایی که اکثر بسته های پایگاه داده Go و درایورها بسته را گسترش می دهند، می توانید به جای انتخاب ORM از بسته در پروژه های خود استفاده کنید.

مطلب مرتبط:   ویژگی های جدیدی که هنگام ارتقا به Vite نسخه 4.0.4 انتظار می رود

GORM همچنین یک سازنده SQL برای ساخت SQL خام ارائه می دهد که برای عملیات پشتیبانی نشده مفید است.