Python Flask SQLAlchemy

Merhaba, bu yazıda önemli bir konu olan SQLAlchemy’den bahsedeceğim.

Kod içerisinde veritabanı işlemlerimizi SQL cümleleri yazarak gerçekleştirmek, hem yazılan kod’un kalitesi hemde oluşturduğu güvenlik açıkları nedeniyle yapılmamalıdır.

SQLAlchemy bu tarz veritabanı işlemlerini python class’ları içinde tutarak SQL cümleleri şeklinde değil fonksiyonlar şeklinde gerçekleştirir. Böylece yazılan kod daha tutarlı ve daha güvenli hale gelecektir.

Bir örnek ile devam edelim,

from flask import Flask, jsonify
from sqlalchemy import Column,Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine

app = Flask(__name__)

Base = declarative_base()
engine = create_engine('mysql+pymysql://root:sifre@localhost30106/flask_mysql')
engine.connect()

class db(Base):
    __tablename__ = "ogrenci_liste"

    isim = Column(String(15), primary_key=True)
    soyisim = Column(String(15))
    yas = Column(Integer)

@app.route("/insert")
def insert():
    DBSession = sessionmaker(bind=engine)
    session = DBSession()
    object = db(isim="Mustafa", soyisim="Koç", yas=40)
    session.add(object)
    session.commit()
    return "Kayıt Eklendi"

@app.route("/select")
def selectQuery():
    DBSession = sessionmaker(bind=engine)
    session = DBSession()
    bilgiler = []

    for instance in session.query(db):
        isim= instance.isim
        soyisim=instance.soyisim
        yas=instance.yas


        bilgiler = {"İsim":isim,"Soyisim":soyisim,"Yaş":yas}

    return jsonify(bilgiler)

if __name__ == '__main__':
    app.run()

Kod kısmını açıklayalım,

"/insert" ve "/select" adında iki farklı route ekledik.

Öncesinde veritabanına ulaşabilmek için bir bağlantı oluşturduk. Bu bağlantı bilgileri sizin veritabanınıza özel olacaktır.

Ardından veritabanında daha önceden oluşturduğumuz tablomuz için bir class hazırladık. Bu class aslında veritabanımızdaki tabloyu temsil ediyor. Ardından değişken olarak belirlediğimiz isim, soyisi, yas değişkenleri de tablodaki kolonları temsil etti.

Belirlediğimiz url’ler için olan fonksiyonlarda veritabanımıza bağlanmak için bir DBSession objesi oluşturduk, devamında add() query() gibi fonksiyonlarla veritabanı işlemlerini gerçekleştirdik.

Şimdi "/select" adresine gidip kontrol edelim.

Her şey başarılı gözüküyor, bir sonraki yazıda görüşmek üzere.

Yorum Gönderin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir