Go Academy · पाठ

कनेक्शन खोलना

डेटाबेस से कनेक्ट करें

पाठ 1, कुल 4 में से13 चरण

कनेक्शन खोलना, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Go Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

database/sql पैकेज

Go का मानक database/sql पैकेज सामान्य और डेटाबेस-स्वतंत्र API उपलब्ध कराता है। इसे अपने विशिष्ट डेटाबेस के ड्राइवर, जैसे PostgreSQL या MySQL, के साथ जोड़ा जाता है।

  • एक API, अनेक डेटाबेस
  • अंतर्निर्मित कनेक्शन पूल
  • सुरक्षित पैरामीटरयुक्त क्वेरी

ड्राइवर इम्पोर्ट करना

ड्राइवर ब्लैंक इम्पोर्ट के माध्यम से स्वयं को पंजीकृत करता है। अंडरस्कोर का अर्थ है कि आप उसे सीधे कॉल करने के लिए नहीं, बल्कि उसके साइड इफ़ेक्ट यानी पंजीकरण के लिए इम्पोर्ट करते हैं।

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

sql.Open

sql.Open ड्राइवर का नाम और डेटा स्रोत का नाम (DSN) लेता है। यह अभी वास्तव में कनेक्ट नहीं करता; केवल पूल तैयार करता है।

db, err := sql.Open("postgres", "postgres://user:pass@localhost/mydb?sslmode=disable")
if err != nil {
    log.Fatal(err)
}

db एक पूल है

लौटाया गया *sql.DB कोई एकल कनेक्शन नहीं, बल्कि कनेक्शनों का पूल है, जिसका उपयोग कई गोरूटीन एक साथ सुरक्षित रूप से कर सकती हैं। इसे एक बार खोलें और पूरे ऐप में साझा करें।

Ping से सत्यापित करना

क्योंकि Open आलस्यपूर्वक कनेक्शन बनाता है, इसलिए वास्तव में कनेक्शन स्थापित करने और यह पुष्टि करने के लिए Ping का उपयोग करें कि डेटाबेस पहुँच योग्य है और प्रमाण-पत्र सही हैं।

if err := db.Ping(); err != nil {
    log.Fatal("cannot reach db:", err)
}

पूल बंद करना

अपने main या सेटअप फ़ंक्शन में db.Close() को defer करें। आप आमतौर पर प्रत्येक क्वेरी के बाद इसे बंद नहीं करते; केवल पूरा ऐप बंद होने पर बंद करते हैं।

defer db.Close()

पूल का समायोजन

SetMaxOpenConns, SetMaxIdleConns और SetConnMaxLifetime से पूल को नियंत्रित करें। ये डेटाबेस के कनेक्शन समाप्त होने से रोकते हैं और पुराने कनेक्शनों को नए से बदलते हैं।

db.SetMaxOpenConns(25)
db.SetMaxIdleConns(5)
db.SetConnMaxLifetime(5 * time.Minute)

चलने योग्य इन-मेमोरी उदाहरण

वास्तविक ड्राइवरों को नेटवर्क वाले डेटाबेस की आवश्यकता होती है, इसलिए यह चलने योग्य उदाहरण केवल मानक लाइब्रेरी के प्रकारों का उपयोग करके नकली open और ping के साथ वही जीवनचक्र दिखाता है।

package main

import (
    "errors"
    "fmt"
)

type DB struct{ dsn string }

func Open(driver, dsn string) (*DB, error) {
    if dsn == "" {
        return nil, errors.New("empty dsn")
    }
    return &DB{dsn: dsn}, nil
}

func (db *DB) Ping() error { return nil }
func (db *DB) Close() error { return nil }

func main() {
    db, err := Open("postgres", "postgres://localhost/mydb")
    if err != nil {
        fmt.Println("open error:", err)
        return
    }
    defer db.Close()
    if err := db.Ping(); err != nil {
        fmt.Println("ping error:", err)
        return
    }
    fmt.Println("connected to", db.dsn)
}

context-सचेत रूप

PingContext, QueryContext और ExecContext को प्राथमिकता दें, ताकि कॉल समय-सीमा और रद्दीकरण का सम्मान करें। context भेजने से यह सीमित रहता है कि अटका हुआ डेटाबेस कॉल कितनी देर तक रोक सकता है।

ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
err := db.PingContext(ctx)

DSN का प्रारूप

हर ड्राइवर अपना DSN निर्धारित करता है। PostgreSQL URL स्वीकार करता है, जबकि MySQL user:pass@tcp(host:3306)/dbname का उपयोग करता है। हमेशा ड्राइवर का दस्तावेज़ देखें और प्रमाण-पत्रों को सीधे कोड में लिखने से बचें।

एक पूल, लंबे समय तक

हर अनुरोध पर sql.Open कॉल करना एक सामान्य गलती है। इससे पूल का लाभ समाप्त हो जाता है और कनेक्शन खत्म हो जाते हैं। शुरुआत में एक बार खोलें, *sql.DB को रखें और हर जगह उसका पुनः उपयोग करें।

त्वरित जाँच

अपने कनेक्शन के ज्ञान का परीक्षण करें।

पुनरावलोकन

आपने कनेक्शन खोलना सीखा:

  • ड्राइवर को ब्लैंक-इम्पोर्ट करें और ड्राइवर तथा DSN के साथ sql.Open कॉल करें
  • *sql.DB समवर्ती उपयोग के लिए सुरक्षित पूल है, जिसे एक बार खोला जाता है
  • Ping वास्तविक कनेक्टिविटी की पुष्टि करता है
  • पूल का समायोजन करें और context-सचेत विधियों का उपयोग करें
  • बंद करते समय defer db.Close() करें
शुरुआत निःशुल्क

एआई शिक्षक के साथ Go सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “कनेक्शन खोलना” पाठ निःशुल्क है?

हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कनेक्शन खोलना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“कनेक्शन खोलना” में मैं क्या सीखूँगा?

डेटाबेस से कनेक्ट करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“कनेक्शन खोलना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. कनेक्शन खोलना
  2. पंक्तियों पर क्वेरी करना
  3. तैयार कथन
  4. ट्रांज़ैक्शन
← Go Academy पर वापस जाएँ