0Pricing
FastAPI Backend Development Bootcamp · Ders

FastAPI'yi PostgreSQL'e Bağlama

SQLAlchemy kullanarak FastAPI uygulamanız ile bir PostgreSQL veritabanı arasında bağlantı kurun.

FastAPI'yi PostgreSQL'e Bağlama, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

Why Connect to a Database?

Web uygulamaları genellikle verileri kalıcı olarak depolamaya ve geri almaya ihtiyaç duyar. Bu veriler kullanıcı profilleri, ürün listeleri veya işlem kayıtları olabilir.

Uygulamanız yeniden başladığında verileri kaybetmek yerine bir veritabanına bağlanırız. Veritabanları, büyük miktardaki bilgileri yönetmek için yapılandırılmış ve verimli bir yol sağlar.

Introducing PostgreSQL

PostgreSQL, güçlü ve açık kaynaklı bir ilişkisel veritabanı sistemidir. Sağlamlığı, özellik seti ve performansıyla bilinir.

  • Güvenilir: Veri bütünlüğünü sağlar.
  • Ölçeklenebilir: Büyük veri hacimlerini ve yüksek kullanıcı yüklerini yönetebilir.
  • Genişletilebilir: Özel veri türlerini ve işlevleri destekler.

Birçok FastAPI uygulaması, birincil veri deposu olarak PostgreSQL kullanır.

The Database Connection URL

Herhangi bir veritabanına bağlanmak için bir bağlantı dizisine (connection string) veya URL'ye ihtiyacınız vardır. Bu URL, SQLAlchemy'ye (ORM'imiz) veritabanınızı nasıl bulacağını ve kimlik doğrulaması yapacağını söyler.

PostgreSQL için tipik bir URL şu şekildedir:

postgresql://user:password@host:port/database_name

Güvenlik ve esneklik açısından bu URL'yi bir ortam değişkeninde saklamak en iyi uygulamadır.

Creating the SQLAlchemy Engine

SQLAlchemy'deki ilk adım bir Engine oluşturmaktır. Engine, veritabanı ile iletişim kurmaktan sorumludur.

Bu bağlantıyı kurmak için sqlalchemy içinden create_engine kullanırız. Çalıştırılabilir örneğimiz için SQLite kullanacağız, ancak PostgreSQL için de ilke aynıdır; yalnızca URL değişir.

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!")

Managing Database Sessions

Veritabanı ile doğrudan motor üzerinden etkileşime geçmek her istek için ideal değildir. Bunun yerine Oturumları (Sessions) kullanırız.

Bir Oturum, veritabanı işlemleriniz için geçici bir çalışma alanı gibidir. İşlemleri (transactions) yönetir ve değişikliklerin düzgün bir şekilde kaydedilmesini veya geri alınmasını sağlar.

Oturum örnekleri üretecek olan sessionmaker kullanarak bir SessionLocal sınıfı oluşturuyoruz.

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!")

The Declarative Base (Review)

Bir önceki dersten, declarative base'in SQLAlchemy modellerinizi tanımlamak için kullanıldığını hatırlayın. Tüm ORM modelleriniz bu temel sınıftan türetilecektir.

Burada yeni bir model tanımlamayacak olsak bile, bu herhangi bir ORM etkileşimi için kurulumun temel bir parçasıdır.

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

print("Declarative Base initialized.")

FastAPI Dependency: get_db()

FastAPI'nin güçlü Bağımlılık Enjeksiyonu sistemi, veritabanı oturumlarını yönetmek için mükemmeldir.

Her istek için yeni bir veritabanı oturumu oluşturan, bunu kullanan ve ardından otomatik olarak kapatan bir get_db fonksiyonu oluşturacağız. Buradaki kilit nokta yield anahtar kelimesidir!

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.")

Using the Session in an Endpoint

Artık Depends kullanarak veritabanı oturumunu doğrudan FastAPI uç noktası fonksiyonlarınıza enjekte edebilirsiniz.

FastAPI, get_db() fonksiyonunu çağıracak, oturumu rotanıza iletecek ve istek işlendikten sonra kapatılmasını sağlayacaktır.

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.")

Full FastAPI-PostgreSQL Setup

İşte her şeyi bir araya getiren eksiksiz bir örnek. Bu uygulama, bir veritabanına bağlantı kurar (yerel test için SQLite kullanılır, ancak kolayca PostgreSQL ile değiştirilebilir) ve bir veritabanı oturumu kullanan bir uç nokta sunar.

Bunu gerçek bir PostgreSQL ile çalıştırmak için SQLALCHEMY_DATABASE_URL kısmını değiştirin ve PostgreSQL sunucunuzun çalıştığından emin olun.

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)

Quick Check: DB Session

get_db bağımlılık fonksiyonunu ele alalım:

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

Bu FastAPI bağımlılığında return db yerine yield db kullanmanın temel nedeni nedir?

Recap: Connecting FastAPI to PostgreSQL

Bu derste, FastAPI uygulamanızı bir veritabanına bağlamak için gereken temel adımları öğrendiniz; özellikle PostgreSQL'e odaklandık (kolaylık olması açısından çalıştırılabilir SQLite örnekleriyle birlikte).

  • Veritabanının yerini belirlemek için Veritabanı URL'sini tanımladık.
  • Bağlantıyı kurmak için create_engine kullandık.
  • Veritabanı oturumlarını yönetmek için SessionLocal kurulumunu yaptık.
  • FastAPI'de istek başına oturumları yönetmek ve enjekte etmek için yield kullanarak bir get_db bağımlılığı oluşturduk.

Artık FastAPI uygulamanız bir veritabanı ile etkileşime girmeye hazır! Bir sonraki adımda, CRUD işlemlerinin nasıl gerçekleştirileceğini öğreneceğiz.

Sıkça Sorulan Sorular

“FastAPI'yi PostgreSQL'e Bağlama” dersi ücretsiz mi?

Evet — “FastAPI'yi PostgreSQL'e Bağlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

“FastAPI'yi PostgreSQL'e Bağlama” dersinde ne öğreneceğim?

SQLAlchemy kullanarak FastAPI uygulamanız ile bir PostgreSQL veritabanı arasında bağlantı kurun. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“FastAPI'yi PostgreSQL'e Bağlama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. SQLAlchemy ORM Temelleri
  2. FastAPI'yi PostgreSQL'e Bağlama
  3. SQLAlchemy ile CRUD İşlemleri
  4. Alembic ile Veritabanı Geçişleri
← FastAPI Backend Development Bootcamp Sayfasına Dön