ORM’ler, programlama dilleriyle veritabanları arasındaki etkileşimi kolaylaştıran ara yüzlerdir Python dilinde kod yazarak SQL sorguları yerine veritabanı işlemleri gerçekleştirilir Bu makalede, Python’da ORM kullanımının önemi ve MySQL veritabanı için SQLAlchemy ve Django ORM kütüphaneleri üzerinde durulacaktır Böylece, geliştirme süreci hızlandırılacak ve daha az kod satırı yazılabilecektir PyMySQL kütüphanesi kullanılarak MySQL veritabanına bağlanıp, SQLAlchemy ile veritabanı işlemleri gerçekleştirilir SQLAlchemy, nesne yönelimli bir yapıya sahip olduğu için, veritabanındaki tablolara ve sütunlara karşılık gelen nesnelerle çalışır Bu sayede, veritabanı işlemleri daha okunaklı, anlaşılır ve kolay bakım yapılabilir hale gelir
ORM'ler (Object-Relational Mapping) bir veritabanı ile programlama dilleri arasında bir arayüz sunar. SQL sorguları yerine, Python gibi bir programlama dilinde kod yazarak veritabanı işlemleri gerçekleştirilebilir. Bu, veritabanı işlemlerinin daha anlaşılır ve kolay uygulanabilir hale gelmesini sağlar.
Bu makalede, Python dilinde ORM'lerin neden kullanıldığı ve MySQL veritabanı için nasıl kullanılabileceği ele alınacaktır. Ayrıca, ORM kullanımına örnek olarak SQLAlchemy ve Django ORM kütüphaneleri incelenecektir. Eğer bir yazılım geliştiricisiyseniz, ORM'leri anlamak ve kullanmak, veritabanı işlemleri için pratik ve tutarlı bir yol sunar.
ORM Nedir?
ORM ya da Object-Relational Mapping, veritabanı işlemleri için bir arayüz sunar. SQL sorguları yerine, ORM, bir programlama dili gibi kullanılan python kodu ile bir veritabanı ile etkileşim kurulmasına izin verir. ORM, verileri organize etme, erişim ve yönetim işlemlerini kolaylaştırır. Bu sayede, geliştirme süreci hızlanır ve daha az kod satırı yazmak mümkündür. ORM, verilerin değiştirilmesi gerektiğinde, veritabanı tablolarına düzeltme kodları yazarak programın çalışmasına devam etmek yerine, programcıların nesneler veya modeller üzerinde değişiklik yapmalarını sağlar. Bu, veritabanı işlemlerinin daha hızlı, daha kullanışlı bir şekilde yapılmaya başlamasına olanak tanır.
MySQL Veritabanı için ORM Kullanımı
Veritabanları, uygulamalar için hayati önem taşıyan verilerin saklandığı alanlardır. Veritabanı yönetimi, birçok farklı çözüm sunar, ancak her seçenek, özellikleri, avantajları ve dezavantajları vardır. ORM'ler, uygulamanın veritabanı işlemlerini yerelleştirerek, çeşitli veritabanı sistemlerine bağlanmak için kullanılabilir.
MySQL gibi popüler bir veritabanı sistemi, ORM kullanımında oldukça etkilidir. MySQL'in kullanımı, Python'da PyMySQL kütüphanesi ile kolaylıkla sağlanabilir. Veritabanı bağlantısı kurduktan sonra, ORM için SQLAlchemy kullanabilirsiniz. SQLAlchemy, hem veritabanı sorguları hem de işlemleri gerçekleştirir.
Python'da ORM kullanımını sağlamak için SQLAlchemy ve Django ORM gibi iki popüler kütüphane vardır. Bu makale, ORM kullanımını sağlamak için SQLAlchemy'yi tercih etmektedir. SQLAlchemy, nesne yönelimli bir yapıya sahip olduğundan, veritabanı şemasına, tablolarına ve sütunlarına karşılık gelen nesnelerle çalışır.
ORM kullanarak, veritabanı işlemleri SQL sorguları yerine Python kodu kullanılarak gerçekleştirilir. Bu, kodun daha okunaklı, daha anlaşılır ve daha kolay bakım yapılabilir hale gelmesini sağlar. Veritabanı işlemlerinde SQL bilginiz varsa, ORM kullanarak da veritabanı sorgularını yazabilirsiniz.
MySQL Veritabanı Bağlantısı
Python'da bir MySQL veritabanına bağlanabilmek için PyMySQL kütüphanesi kullanılabilir. Bu kütüphane ile MySQL veritabanına bağlanılabilmesi için PyMySQL kütüphanesinin yüklenmesi gerekmektedir. PyMySQL yükleme işlemi için pip install PyMySQL kodu kullanılır.
Bağlantı kurulumu için ise host, user, password, db, charset ve cursorclass gibi parametreler kullanılır. Parametreler veritabanına bağlantı için gerekli bilgileri içermektedir. Bu bilgilerin doğru bir şekilde girilmesi gerekmektedir. Örnek olarak;
Kütüphane | Kod |
---|---|
PyMySQL | import pymysql =connection = pymysql.connect(host='localhost', = user='user', = password='passwd', = db='db', = charset='utf8mb4', = cursorclass=pymysql.cursors.DictCursor) |
Yukarıdaki örnekte PyMySQL kütüphanesi kullanılarak MySQL veritabanına bağlanmak için gerekli bilgiler girilmiştir. Bu bilgiye göre Python kodu kullanılarak veritabanı işlemleri gerçekleştirilebilir.
Kurulum
PyMySQL, Python programlama dili için MySQL veritabanına bağlanmak için kullanılan bir kütüphanedir. Bu kütüphanenin kurulumu oldukça basit ve hızlıdır. Kurulum için bilgisayarınızda Python yüklü olmalıdır ve aşağıdaki komutu kullanarak PyMySQL kütüphanesini kurabilirsiniz:
Komut: | $pip install PyMySQL |
Açıklama: | Bu komut, PyMySQL kütüphanesini indirir ve yükler. |
Bu komutu çalıştırdıktan sonra PyMySQL kütüphanesi kolayca kullanılabilir hale gelir ve Python programlama dili için MySQL veritabanına bağlanmak çok daha kolay hale gelir.
Bağlantı Kurulumu
Öncelikle PyMySQL kütüphanesi, Python'da MySQL veritabanına bağlanmak için kullanılabilir.
Bu bağlantıyı oluşturmak için, connection nesnesi kullanıyoruz. Öncesinde
import pymysqlyaparak kütüphaneyi projemize dahil etmeliyiz.
Host, user, password, db, charset ve cursorclass gibi parametreler belirtilerek connection nesnesi oluşturulur.
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
db='db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
ORM kullanımı için SQLAlchemy kütüphanesi projemize yüklenmelidir. Bunun için önce pip install sqlalchemy komutu kullanılır.
=
$pip install sqlalchemy
Öncelikle SQLAlchemy'deki create_engine, Column, Integer, String, sessionmaker ve declarative_base fonksiyonlarını projemize dahil etmeliyiz.
Sonra, tablolarımıza karşılık gelecek python class'larını tanımlamalıyız. Bu örnekte "users" tablosunu kullanacağız ve bunun için aşağıdaki class tanımını yapıyoruz:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Son olarak, bir motor oluşturarak ve ilişkili bir Session nesnesi oluşturarak veritabanına kayıt yapabiliriz.
engine = create_engine('mysql+pymysql://user:password@localhost/db?charset=utf8mb4')
Session = sessionmaker(bind=engine)
session = Session()
user = User(name='John', age=25)
session.add(user)
session.commit()
ORM kullanımı için Python'da iki popüler kütüphane mevcuttur: SQLAlchemy ve Django ORM. Bu makale SQLAlchemy kullanacak.
SQLAlchemy ORM
SQLAlchemy, veritabanı işlemleri için kullanılabilir ve aynı zamanda bir ORM'dir. ORM, bir veritabanı şemasına, tablolarına, sütunlarına ve dize dizilerine karşılık gelen nesnelerle çalıştığından, geleneksel SQL sorgularından daha soyut bir yapıya sahiptir.
SQLAlchemy, birden çok veritabanı sistemine, veritabanı sorgularını genişletmenizi sağlayan bir arayüz sağlar. Bu, bir veritabanı sistemi değiştirildiğinde veya genişletildiğinde kodunuzu değiştirme ihtiyacını azaltır.
ORM nesneleri, bir veritabanı işlemi yapmak için kullanılabilir. Örneğin, bir kullanıcı nesnesi bir kullanıcı tablosunda bir satıra karşılık gelir. Bu nesneyi kullanarak, bir kullanıcının veritabanından nasıl alınabileceği veya kaydedileceği gibi işlemler yapılabilir.
ORM Veritabanın Oluşturulması
ORM veritabanı oluşturmak için bir şemaya ihtiyaç duyar. SQLAlchemy ORM kullanarak bir veritabanı modeli oluşturmak oldukça kolaydır. Aşağıdaki örnek, bir 'users' tablosu oluşturmak için SQLAlchemy kütüphanesi kullanır:
Kod | Açıklama |
---|---|
from sqlalchemy import create_engine, Column, Integer, String | create_engine, Column, Integer, ve String sınıflarını içe aktarır |
from sqlalchemy.ext.declarative import declarative_base | declarative_base fonksiyonunu içe aktarır. Bu fonksiyon, yeni tablo sınıflarının oluşturulmasını sağlar. |
Base = declarative_base() | declarative_base fonksiyonunu bir değişkene atar. |
class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) | Veritabanında oluşturulacak tabloyu tanımlar. |
engine = create_engine('mysql+pymysql://user:password@localhost/db', echo=True) | Veritabanı motorunu oluşturur. Bu örnekte, "user" ve "password" yerine, gerçek kullanıcı adı ve şifreniz mevcut olmalıdır. |
Base.metadata.create_all(engine) | Tablo şemasını veritabanında oluşturur. |
Yukarıdaki örnek, bir "users" tablosu oluşturur. "users" tablosu, üç sütuna sahiptir: id, name, ve age. id sütunu, birincil anahtar olarak belirlenmiştir.