Merhaba arkadaşlar, bu yazımızda Python derslerinin bu serisinde on altıncı ders olarak Python ile Veritabanı İşlemleri konusuna değinmeye çalışacağım. Umarım sizler için faydalı bir yazı olur. İsterseniz hemen başlayalım.
Python ile Veritabanı İşlemleri
Python ile veritabanı işlemleri yapmak için birkaç farklı seçenek mevcuttur. En yaygın olarak kullanılanları şunlardır:
sqlite3
: Bu modül, SQLite veritabanı işlemleri için kullanılır. SQLite, veritabanı olarak dosya tabanlıdır ve kurulum gerektirmez.MySQLdb
: Bu modül, MySQL veritabanı işlemleri için kullanılır. MySQL, veritabanı olarak sunucu tabanlıdır ve önceden kurulmuş olması gerekir.psycopg2
: Bu modül, PostgreSQL veritabanı işlemleri için kullanılır. PostgreSQL, veritabanı olarak sunucu tabanlıdır ve önceden kurulmuş olması gerekir.pyodbc
: Bu modül, ODBC arabirimi kullanarak çeşitli veritabanları işlemleri için kullanılır.
Python ile veritabanı işlemleri yaparken, veritabanına bağlantı kurulur, SQL sorguları yazılır ve sonuçlar elde edilir. Örnek olarak, SQLite veritabanı işlemleri için aşağıdaki kod parçası verilebilir :
import sqlite3 # veritabanına bağlantı kur conn = sqlite3.connect("example.db") # veritabanı
Neden SQLite?
SQLite, diğer veritabanlarından farklı olarak, dosya tabanlı bir veritabanıdır. Bu nedenle, kurulum ve yapılandırma gerektirmez ve kolayca kullanılabilir. SQLite veritabanı dosyası, bir proje içinde taşınabilir veya uygulamanın içinde barındırılabilir. Veritabanı dosyası, uygulamanın kapatılması veya başka bir yerde çalıştırılması durumunda birlikte taşınabilir. SQLite, hafıza ve disk boyutu sınırlamaları olmadan çalışır ve terabaytlar büyüklüğünde veritabanları oluşturabilir. Ayrıca, SQLite veritabanı, sadece bir işlemi aynı anda gerçekleştirebilir. Bu nedenle, SQLite özellikle, küçük ve orta ölçekli projeler için uygundur. Bu projeler için, SQLite, veritabanı işlemlerini kolayca gerçekleştirmenizi sağlar ve yüksek performans gerektirmez.
CRUD İşlemleri
CRUD, veritabanı işlemleri için kullanılan bir kısaltmadır ve Create, Read, Update, Delete işlemlerini ifade eder.
- Create (Ekleme): Veritabanına yeni bir kayıt eklemek için kullanılır. Örneğin,
INSERT INTO
SQL sorgusu kullanılır. - Read (Okuma): Veritabanındaki kayıtları okumak için kullanılır. Örneğin,
SELECT
SQL sorgusu kullanılır. - Update (Güncelleme): Veritabanındaki kayıtları güncellemek için kullanılır. Örneğin,
UPDATE
SQL sorgusu kullanılır. - Delete (Silme): Veritabanındaki kayıtları silmek için kullanılır. Örneğin,
DELETE
SQL sorgusu kullanılır.
SQLite veritabanı için örnekler :
# Create (INSERT INTO) conn.execute("INSERT INTO employee (ID, NAME, AGE) VALUES (1, 'John Doe', 25)") # Read (SELECT) cursor = conn.execute("SELECT * FROM employee") for row in cursor: print("ID = ", row[0]) print("NAME = ", row[1]) print("AGE = ", row[2]) # Update (UPDATE) conn.execute("UPDATE employee SET AGE = 30 WHERE ID = 1") # Delete (DELETE) conn.execute("DELETE FROM employee WHERE ID = 2")
Bu CRUD işlemleri veritabanınızda yaptığınız işlemleri gerçekleştirmeniz için gereklidir.
Create İşlemi
Create işlemi, veritabanına yeni bir kayıt eklemek için kullanılır. SQLite veritabanında, INSERT INTO
SQL sorgusu kullanılır. Örnek olarak, aşağıdaki kod parçası verilebilir:
conn.execute("INSERT INTO employee (ID, NAME, AGE) VALUES (1, 'John Doe', 25)") conn.commit()
Bu kod parçası, “employee” isimli tablonun içine “ID”, “NAME”, “AGE” alanlarına sahip bir kayıt ekler. Yeni eklenen kaydın ID’si 1, NAME’si “John Doe” ve AGE’si 25 olacaktır.
conn.commit()
komutu, veritabanına yaptığınız değişiklikleri kaydetmenizi sağlar. Bu komutu unutursanız, veritabanına eklediğiniz kayıt gerçekleşmeyecektir.
Ayrıca, Python’da kullandığınız veritabanı arayüzünün kendi metodlarına sahip olabilir. Örneğin, SQLite3 için execute()
metodu yerine executemany()
metodu kullanarak birden fazla kayıt ekleyebilirsiniz.
data = [(2, "Jane Smith", 30), (3, "Bob Johnson", 35)] conn.executemany("INSERT INTO employee (ID, NAME, AGE) VALUES (?,?,?)", data) conn.commit()
Bu kod parçası, “employee” isimli tablonun içine 2 adet kayıt ekler. İlk kayıt ID’si 2, NAME’si “Jane Smith” ve AGE’si 30 olacaktır. İkinci kayıt ID’si 3, NAME’si “Bob Johnson” ve AGE’si 35 olacaktır.
Bu örnekte, executemany()
metodu ile birden fazla kayıt eklemiş olduk. Bu metod, SQL sorgusunu ve verileri içeren bir liste olarak alır. Bu yolla, tek seferde birden fazla kayıt ekleyebilirsiniz ve commit()
işlemi gerekmez.
Not: Metodların kullanımı veritabanı arayüzüne ve kullandığınız veritabanına göre değişebilir.
Read İşlemi
Read işlemi, veritabanındaki kayıtları okumak için kullanılır. SQLite veritabanında, SELECT
SQL sorgusu kullanılır. Örnek olarak, aşağıdaki kod parçası verilebilir:
cursor = conn.execute("SELECT * FROM employee") for row in cursor: print("ID = ", row[0]) print("NAME = ", row[1]) print("AGE = ", row[2])
Bu kod parçası, “employee” isimli tablonun içindeki tüm kayıtları okur. Döngü içinde, her bir kayıt için alanları yazdırır.
SELECT
sorgusu ile belirli alanları seçebilirsiniz. Örneğin, sadece “NAME” ve “AGE” alanlarını okumak isterseniz, sorguyu şöyle yazabilirsiniz:
cursor = conn.execute("SELECT NAME, AGE FROM employee")
Ayrıca, belirli koşullarla sorgu yapabilirsiniz. Örneğin, sadece 30 yaşın üstündeki kayıtları öğrenmek isterseniz:
cursor = conn.execute("SELECT * FROM employee WHERE AGE > 30")
Bu kod parçası, “employee” isimli tablonun içinde sadece “AGE” alanı 30’dan büyük olan kayıtları okur.
Read işlemi için kullandığınız SQL sorgusu, veritabanınızda mevcut olan tablo ve alanların isimlerine göre değişebilir.
Ayrıca, Python’da kullandığınız veritabanı arayüzünün kendi metodlarına sahip olabilir. Örneğin, SQLite3 için fetchone()
, fetchmany()
, fetchall()
gibi metodlar kullanarak veritabanından veri çekebilirsiniz.
Update İşlemi
Update işlemi, veritabanındaki kayıtları güncellemek için kullanılır. SQLite veritabanında, UPDATE
SQL sorgusu kullanılır. Örnek olarak, aşağıdaki kod parçası verilebilir:
conn.execute("UPDATE employee SET AGE = 30 WHERE ID = 1") conn.commit()
Bu kod parçası, “employee” isimli tablonun içinde “ID” alanı 1 olan kaydın “AGE” alanını 30 yapar.
UPDATE
sorgusu ile belirli alanları ve koşulları belirleyerek güncelleme işlemi yapabilirsiniz. Örneğin, sadece “NAME” alanını değiştirmek istiyorsanız, sorguyu şöyle yazabilirsiniz:
conn.execute("UPDATE employee SET NAME = 'Jane Smith' WHERE ID = 2") conn.commit()
Update işlemi için kullandığınız SQL sorgusu, veritabanınızda mevcut olan tablo ve alanların isimlerine göre değişebilir.
Ayrıca, Python’da kullandığınız veritabanı arayüzünün kendi metodlarına sahip olabilir. Örneğin, SQLite3 için executemany()
metodu gibi metodlar kullanarak tek seferde birden fazla kayıt güncelleyebilirsiniz.
Delete İşlemi
Delete işlemi, veritabanındaki kayıtları silmek için kullanılır. SQLite veritabanında, DELETE
SQL sorgusu kullanılır. Örnek olarak, aşağıdaki kod parçası verilebilir:
conn.execute("DELETE FROM employee WHERE ID = 2") conn.commit()
Bu kod parçası, “employee” isimli tablonun içinde “ID” alanı 2 olan kaydı siler.
Delete işlemi için kullandığınız SQL sorgusu, veritabanınızda mevcut olan tablo ve alanların isimlerine göre değişebilir.
Ayrıca, Python’da kullandığınız veritabanı arayüzünün kendi metodlarına sahip olabilir. Örneğin, SQLite3 için execute()
metodu gibi metodlar kullanarak tek seferde birden fazla kayıt silme işlemi yapabilirsiniz.
Dikkat : Delete işlemi geri alınamaz. Bu nedenle dikkatli olmanız önemlidir.
Arkadaşlar bu Python ile Veritabanı İşlemleri adlı yazımızın da sonuna gelmiş bulunmaktayız. Umarım faydalı olmuştur.