Modern web geliştirme dünyasında hız ve esneklik her şeydir. Python’ın en popüler mikro web çerçevelerinden (micro-framework) biri olan Flask, hem yeni başlayanlar için öğrenme eğrisi düşük bir giriş noktası sunuyor hem de profesyonel projeler için gereken gücü sağlıyor. Peki, sadece birkaç satır kodla nasıl çalışan bir web sunucusu kurabilir ve bunu gerçek bir veritabanıyla nasıl konuşturabilirsiniz?
Flask ile Web Dünyasına İlk Adım
Bu projede, Flask’ın gücünü iki farklı seviyede inceliyoruz. İlk aşamada, sadece “merhaba” diyen minimal bir sunucu kurarken; ikinci aşamada, SQLite veritabanı ile entegre, tam fonksiyonel bir REST API (Temsili Durum Aktarımı Uygulaması) geliştiriyoruz. Bu yolculuk, basit bir rota tanımlamasından, karmaşık veritabanı sorgularına ve dinamik veri güncellemelerine kadar uzanıyor.
Kodun Anatomisi
Proje iki ana bölümden oluşuyor: Minimal Sunucu ve SQLite REST API.
1. Minimal Sunucu Yapısı
Minimal sunucuda temel amaç, bir URL isteğine karşılık uygun cevabı döndürmektir. Burada flask_helpers.py dosyası kullanılarak rotalar (routes) modüler hale getirilmiştir.
# Flask route handler örneği
from flask import jsonify
def setup_routes(app):
@app.route('/')
def index():
return 'Hello from Python + Flask!'
@app.route('/ping')
def ping():
# jsonify ile Python sözlüğünü JSON formatına dönüştürüyoruz
return jsonify({'status': 'ok', 'message': 'Python + Flask is running!'})
2. SQLite REST API ve Veritabanı Yönetimi
İşlerin ciddileştiği nokta burası. 02_flask_sqlite_api.py dosyasında, uygulama başladığında veritabanının otomatik olarak oluşturulması ve örnek verilerle doldurulması (seeding) sağlanıyor.
Kilit Özellikler:
- Veritabanı Bağlantısı:
sqlite3.Rowkullanılarak veritabanı sonuçlarına sütun isimleriyle erişim sağlanıyor. - REST Prensipleri: Kaynaklar üzerinde işlem yapmak için standart HTTP metodları (
GET,POST,PUT,DELETE) kullanılıyor. - İlişkisel Sorgular: Kitaplar ve yazarlar arasındaki ilişkiyi yönetmek için
JOINsorguları kullanılıyor. - Dinamik SQL:
PUTisteğiyle gelen sadece belirli alanların güncellenmesi için dinamik bir SQL cümlesi oluşturuluyor.
# Dinamik güncelleme mantığından bir kesit
allowed = ['title', 'year', 'genre', 'rating']
fields = {k: v for k, v in data.items() if k in allowed}
set_clause = ', '.join(f'{k} = ?' for k in fields)
values = list(fields.values()) + [book_id]
conn.execute(f"UPDATE books SET {set_clause} WHERE id = ?", values)
Nasıl Çalıştırılır?
Uygulamayı kendi bilgisayarınızda denemek için şu adımları izleyin:
- Gereksinimleri Yükleyin:
pip install flask
- Minimal Sunucuyu Başlatın:
python 01_flask_hello.py
Ardından tarayıcınızdan http://localhost:8117 adresine gidin.
- REST API’yi Başlatın:
python 02_flask_sqlite_api.py
API’yi test etmek için curl veya Postman kullanabilirsiniz. Örneğin tüm kitapları listelemek için:
curl http://localhost:8117/api/books
Ne Öğrendik?
Bu proje ile birlikte web geliştirmenin temel taşlarını deneyimledik:
- Web Rotalama: URL’leri Python fonksiyonlarına nasıl bağlayacağımızı öğrendik.
- JSON Veri Transferi: Modern API’lerin standart dili olan JSON ile veri alışverişi yaptık.
- SQLite Entegrasyonu: Dosya tabanlı bir veritabanı ile nasıl etkileşime geçileceğini gördük.
- CRUD Operasyonları: Create (Oluştur), Read (Oku), Update (Güncelle) ve Delete (Sil) işlemlerinin REST standartlarında nasıl kurgulandığını uyguladık.
- Hata Yönetimi: Kaynak bulunamadığında
404veya hatalı isteklerde400gibi uygun HTTP durum kodlarını döndürmeyi deneyimledik.
Kaynaklar ve Sonraki Adımlar
Flask dünyasını daha derinlemesine keşfetmek için resmi Flask Dokümantasyonu‘na göz atabilirsiniz. Bir sonraki adım olarak bu API’ye bir kimlik doğrulama (Authentication) katmanı eklemeyi veya basit bir HTML/CSS ön yüz (Frontend) tasarlamayı deneyebilirsiniz.
Ahmet Aksoy
Not: Bu yazıda incelediğimiz kodu ve benzer projelerin kaynak kodlarını https://github.com/ahmetax/practical-python-examples adresinde bulabilirsiniz.
python, python programlama, python öğren, yazılım, kod, flask, rest api, sqlite, veritabanı, web geliştirme, başlangıç seviyesi, backend