FastAPI को PostgreSQL से जोड़ना
SQLAlchemy का उपयोग करके अपने FastAPI अनुप्रयोग और PostgreSQL डेटाबेस के बीच कनेक्शन सेट अप करें।
FastAPI को PostgreSQL से जोड़ना, CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Database से Connect क्यों करें?
Web applications को अक्सर data को स्थायी रूप से store और retrieve करने की आवश्यकता होती है। यह data user profiles, product listings या transaction records हो सकता है।
Application restart होने पर data खोने के बजाय हम database से connect करते हैं। Databases बड़ी मात्रा में information को manage करने का structured और efficient तरीका प्रदान करते हैं।
PostgreSQL का परिचय
PostgreSQL एक शक्तिशाली, मुक्त-स्रोत रिलेशनल डेटाबेस प्रणाली है। यह अपनी मजबूती, सुविधाओं और प्रदर्शन के लिए जानी जाती है।
- विश्वसनीय: डेटा की अखंडता सुनिश्चित करती है।
- स्केलेबल: बड़ी मात्रा में डेटा और बहुत अधिक उपयोगकर्ता भार संभालती है।
- विस्तार योग्य: कस्टम डेटा प्रकारों और फ़ंक्शन का समर्थन करती है।
कई FastAPI एप्लिकेशन PostgreSQL को अपने प्राथमिक डेटा संग्रहण के रूप में उपयोग करते हैं।
डेटाबेस कनेक्शन URL
किसी भी डेटाबेस से कनेक्ट करने के लिए आपको एक कनेक्शन स्ट्रिंग या URL की आवश्यकता होती है। यह URL SQLAlchemy (हमारे ORM) को बताता है कि आपके डेटाबेस को कैसे ढूँढ़ना है और उसमें प्रमाणीकरण कैसे करना है।
PostgreSQL के लिए सामान्य URL इस प्रकार दिखता है:
postgresql://user:password@host:port/database_nameसुरक्षा और लचीलेपन के लिए इस URL को किसी पर्यावरण चर में रखना सबसे अच्छा तरीका है।
SQLAlchemy इंजन बनाना
SQLAlchemy में पहला चरण एक इंजन बनाना है। इंजन डेटाबेस के साथ संचार करने के लिए ज़िम्मेदार होता है।
यह कनेक्शन स्थापित करने के लिए हम sqlalchemy से create_engine का उपयोग करते हैं। चलने योग्य उदाहरण के लिए हम SQLite का उपयोग करेंगे, लेकिन PostgreSQL के लिए सिद्धांत वही है—केवल URL बदलता है।
from sqlalchemy import create_engine
# For PostgreSQL, this would be:
# SQLALCHEMY_DATABASE_URL = "postgresql://user:password@localhost/dbname"
# For a runnable example, we'll use SQLite:
SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
print("Engine created successfully!")डेटाबेस सत्रों का प्रबंधन
हर अनुरोध के लिए इंजन के माध्यम से सीधे डेटाबेस से संवाद करना आदर्श नहीं होता। इसके बजाय, हम सत्रों का उपयोग करते हैं।
सत्र आपके डेटाबेस संचालन के लिए एक अस्थायी कार्यक्षेत्र जैसा होता है। यह लेन-देन संभालता है और सुनिश्चित करता है कि बदलाव सही तरीके से प्रतिबद्ध या वापस किए जाएँ।
हम sessionmaker का उपयोग करके SessionLocal क्लास बनाते हैं, जो सत्र इंस्टेंस तैयार करेगी।
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
# Using SQLite for a runnable example
SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
print("SessionLocal configured!")घोषणात्मक बेस (पुनरावलोकन)
पिछले पाठ से याद कीजिए कि घोषणात्मक बेस का उपयोग आपके SQLAlchemy मॉडल परिभाषित करने के लिए किया जाता है। आपके सभी ORM मॉडल इस बेस से इनहेरिट करेंगे।
हालाँकि यहाँ हम कोई नया मॉडल परिभाषित नहीं करेंगे, फिर भी यह किसी भी ORM इंटरैक्शन के सेटअप का आवश्यक हिस्सा है।
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
print("Declarative Base initialized.")FastAPI निर्भरता: get_db()
FastAPI की शक्तिशाली निर्भरता इंजेक्शन प्रणाली डेटाबेस सत्रों के प्रबंधन के लिए बिल्कुल उपयुक्त है।
हम get_db नाम का एक फ़ंक्शन बनाएँगे, जो हर अनुरोध के लिए नया डेटाबेस सत्र बनाएगा, उसका उपयोग करेगा और फिर उसे अपने-आप बंद कर देगा। यहाँ yield कीवर्ड महत्वपूर्ण है!
from sqlalchemy.orm import Session
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
# Assuming these are defined elsewhere or imported
SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
print("get_db dependency function defined.")एंडपॉइंट में सत्र का उपयोग
अब आप Depends का उपयोग करके डेटाबेस सत्र को सीधे अपने FastAPI एंडपॉइंट फ़ंक्शन में इंजेक्ट कर सकते हैं।
FastAPI get_db() को कॉल करेगा, सत्र को आपके रूट में भेजेगा और अनुरोध पूरा होने के बाद उसे बंद करना सुनिश्चित करेगा।
from fastapi import FastAPI, Depends
from sqlalchemy.orm import Session
# For this snippet, we'll use a mock get_db to make it runnable
class MockSession:
def close(self): pass
def get_db_mock():
yield MockSession()
app = FastAPI()
@app.get("/db-status")
def read_db_status(db: Session = Depends(get_db_mock)):
# In a real app, 'db' would be your actual SQLAlchemy session
return {"message": "Database session received!"}
print("FastAPI endpoint defined using DB dependency.")पूरा FastAPI-PostgreSQL सेटअप
यहाँ सब कुछ एक साथ जोड़ने वाला पूरा उदाहरण दिया गया है। यह ऐप डेटाबेस से कनेक्शन सेट करता है (स्थानीय परीक्षण के लिए SQLite का उपयोग करता है, जिसे PostgreSQL के लिए आसानी से बदला जा सकता है) और एक ऐसा एंडपॉइंट उपलब्ध कराता है जो डेटाबेस सत्र का उपयोग करता है।
इसे वास्तविक PostgreSQL के साथ चलाने के लिए SQLALCHEMY_DATABASE_URL बदलें और सुनिश्चित करें कि आपका PostgreSQL सर्वर चल रहा हो।
from fastapi import FastAPI, Depends
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, Session
from sqlalchemy.ext.declarative import declarative_base
import uvicorn
# --- Database Configuration (for PostgreSQL, replace URL) ---
# For a runnable example, we'll use SQLite in-memory:
SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
# For PostgreSQL, it would be:
# SQLALCHEMY_DATABASE_URL = "postgresql://user:password@localhost/dbname"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
# --- Dependency to get DB session ---
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
# --- FastAPI Application ---
app = FastAPI()
@app.get("/connect-test")
def connect_test(db: Session = Depends(get_db)):
# We've successfully received a DB session 'db'
# In a real app, you'd perform DB operations here.
return {"status": "Connected to DB", "db_type": SQLALCHEMY_DATABASE_URL.split('://')[0]}
# To run this, save as 'main.py' and run 'uvicorn main:app --reload'
# if __name__ == "__main__":
# uvicorn.run(app, host="0.0.0.0", port=8000)त्वरित जाँच: डेटाबेस सत्र
get_db निर्भरता फ़ंक्शन पर विचार कीजिए:
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()इस FastAPI निर्भरता में return db के बजाय yield db का उपयोग करने का मुख्य कारण क्या है?
पुनरावलोकन: FastAPI को PostgreSQL से कनेक्ट करना
इस पाठ में आपने अपने FastAPI एप्लिकेशन को डेटाबेस से कनेक्ट करने के आवश्यक चरण सीखे, विशेष रूप से PostgreSQL पर ध्यान केंद्रित करते हुए (सुविधा के लिए चलने योग्य SQLite उदाहरणों के साथ)।
- डेटाबेस का स्थान निर्धारित करने के लिए हमने डेटाबेस URL परिभाषित किया।
- कनेक्शन स्थापित करने के लिए हमने
create_engineका उपयोग किया। - डेटाबेस सत्रों के प्रबंधन के लिए हमने
SessionLocalसेट अप किया। - FastAPI में प्रति अनुरोध सत्र इंजेक्ट और प्रबंधित करने के लिए हमने
yieldका उपयोग करकेget_dbनिर्भरता बनाई।
अब आपका FastAPI ऐप डेटाबेस के साथ काम करने के लिए तैयार है! अगले पाठ में हम CRUD संचालन करना सीखेंगे।
एआई शिक्षक के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 21
- पाठ
- 84
अक्सर पूछे जाने वाले प्रश्न
क्या “FastAPI को PostgreSQL से जोड़ना” पाठ निःशुल्क है?
हाँ — FastAPI बैकएंड डेवलपमेंट बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “FastAPI को PostgreSQL से जोड़ना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“FastAPI को PostgreSQL से जोड़ना” में मैं क्या सीखूँगा?
SQLAlchemy का उपयोग करके अपने FastAPI अनुप्रयोग और PostgreSQL डेटाबेस के बीच कनेक्शन सेट अप करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“FastAPI को PostgreSQL से जोड़ना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- SQLAlchemy ORM की मूल बातें
- FastAPI को PostgreSQL से जोड़ना
- SQLAlchemy के साथ CRUD संचालन
- Alembic के साथ डेटाबेस माइग्रेशन