Python'da SQL sorguları kullanarak veritabanlarıyla etkileşim kurabilirsiniz. SQL (Structured Query Language), veritabanı üzerinde veri sorgulama, ekleme, güncelleme ve silme gibi işlemleri yapmanızı sağlar. Python'da SQL sorguları genellikle sqlite3
, mysql-connector-python
, psycopg2
gibi kütüphaneler aracılığıyla gerçekleştirilir.
Bu rehberde, Python'da SQL sorgularını SQLite kullanarak adım adım inceleyeceğiz. Diğer veritabanları için de mantık benzer olup, kullandığınız veritabanına göre kütüphane değişiklikleri yapmanız yeterlidir.
1. SQLite Kullanarak Python'da SQL Sorguları
a. Veritabanı Bağlantısı Kurma
Öncelikle veritabanına bağlanmamız gerekir. sqlite3
modülü ile SQLite veritabanına bağlanalım.
import sqlite3
# Veritabanına bağlan veya yeni bir veritabanı oluştur
conn = sqlite3.connect('example.db')
# İmleç (cursor) oluştur
cursor = conn.cursor()
b. Tablo Oluşturma (CREATE TABLE)
Bir veritabanı tablosu oluşturmak için SQL'de CREATE TABLE
ifadesi kullanılır. Python'da bu sorguyu çalıştırmak için cursor.execute()
metodunu kullanırız.
# Tablo oluşturma sorgusu
cursor.execute('''
CREATE TABLE IF NOT EXISTS kullanicilar (
id INTEGER PRIMARY KEY AUTOINCREMENT,
isim TEXT,
yas INTEGER
)
''')
# Değişiklikleri kaydet
conn.commit()
c. Veri Ekleme (INSERT INTO)
Veritabanına veri eklemek için INSERT INTO
ifadesi kullanılır.
# Tek bir veri ekleme
cursor.execute('''
INSERT INTO kullanicilar (isim, yas)
VALUES (?, ?)
''', ('Ali', 25))
# Değişiklikleri kaydet
conn.commit()
# Birden fazla veri ekleme
veriler = [('Ayşe', 30), ('Mehmet', 22), ('Ahmet', 27)]
cursor.executemany('''
INSERT INTO kullanicilar (isim, yas)
VALUES (?, ?)
''', veriler)
# Değişiklikleri kaydet
conn.commit()
d. Veri Sorgulama (SELECT)
Veritabanındaki verileri sorgulamak için SELECT
ifadesini kullanırız. Sorgulama işlemleri genellikle cursor.execute()
ile yapılır ve sonuçlar fetchall()
veya fetchone()
ile alınır.
# Tüm verileri sorgulama
cursor.execute('SELECT * FROM kullanicilar')
kullanicilar = cursor.fetchall()
for kullanici in kullanicilar:
print(kullanici)
e. Belirli Kriterlerle Veri Sorgulama
Verileri belirli bir kritere göre sorgulamak için SQL'in WHERE
ifadesi kullanılır.
# Yaşı 25'ten büyük olan kullanıcıları sorgulama
cursor.execute('SELECT * FROM kullanicilar WHERE yas > 25')
sonuc = cursor.fetchall()
for row in sonuc:
print(row)
f. Verileri Güncelleme (UPDATE)
Bir kaydı güncellemek için UPDATE
ifadesi kullanılır.
# Yaşı 25 olan kullanıcının adını güncelle
cursor.execute('''
UPDATE kullanicilar
SET isim = ?
WHERE yas = ?
''', ('Ali Veli', 25))
# Değişiklikleri kaydet
conn.commit()
g. Veri Silme (DELETE)
Veritabanındaki bir kaydı silmek için DELETE FROM
ifadesi kullanılır.
# Yaşı 22 olan kullanıcının kaydını sil
cursor.execute('''
DELETE FROM kullanicilar
WHERE yas = ?
''', (22,))
# Değişiklikleri kaydet
conn.commit()
h. Veritabanı Bağlantısını Kapatma
İşlemler tamamlandıktan sonra veritabanı bağlantısını kapatmayı unutmamalısınız.
# Veritabanı bağlantısını kapatma
conn.close()
2. MySQL Kullanarak SQL Sorguları
MySQL gibi daha büyük ölçekli veritabanlarında da SQL sorguları benzer şekilde çalışır. MySQL ile bağlanmak için mysql-connector-python
kütüphanesi kullanılabilir. Aşağıda örnek bir MySQL bağlantısı ve sorgusu gösterilmiştir.
import mysql.connector
# MySQL bağlantısı oluştur
conn = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="veritabani_adi"
)
cursor = conn.cursor()
# Veri ekleme
cursor.execute('''
INSERT INTO kullanicilar (isim, yas)
VALUES (%s, %s)
''', ("Mehmet", 30))
# Değişiklikleri kaydet ve bağlantıyı kapat
conn.commit()
conn.close()
Önemli Noktalar
-
Parametreli Sorgular: SQL enjeksiyon saldırılarından korunmak için parametreli sorgular kullanın. Bu, kullanıcıdan alınan verilerin güvenli bir şekilde SQL sorgularında kullanılmasını sağlar.
cursor.execute('SELECT * FROM kullanicilar WHERE yas = ?', (25,))
-
commit()
İşlemi: Veritabanına veri ekleme, güncelleme veya silme işlemlerinde mutlakaconn.commit()
yapmalısınız. Aksi takdirde değişiklikler kaydedilmez.
Sonuç
Python ile SQL sorguları çalıştırmak oldukça esnek ve güçlüdür. SQLite, MySQL, PostgreSQL gibi veritabanlarıyla Python'da sorunsuz bir şekilde çalışabilir, veri ekleme, sorgulama, güncelleme ve silme işlemlerini SQL kullanarak gerçekleştirebilirsiniz.