# Python PostgreSQL Veritabanı

Python PostgreSQL veritabanı işlemlerini öğreniyoruz.

PostgreSQL; güçlü, açık kaynak kodlu, nesne ilişkisel ve tüm işletim sistemlerinde çalışabilen gelişmiş bir veritabanı sistemidir. SQL diliyle birlikte kullanılan PostgreSQL’in verileri güvenli bir şekilde saklama, karmaşık verileri ölçeklendirme, hız, performans gibi bir çok özelliği ve avantajı vardır. PostgreSQL hakkında daha detaylı bilgileri araştırma yaparak öğrenebilirsiniz. Bu yazımızda ise Python ile PostgreSQL kullanımını anlatmaya odaklanacağız.

1. Psycopg2 Kütüphanesinin Kurulması ve Projeye Dahil Etme

Python ve PostgreSQL veritabanı bağlantısı işlemini yapabilmek için birçok modül mevcuttur. Biz bunların arasında daha yaygın bir kullanıma sahip olan Psycopg2 kütüphanesini kullanacağız. Maddelere dökersek ise Psycopg2 kütüphanesi kullanmamızın sebepleri arasında başlıca şunlar vardır;

  • Psycopg2, PostgreSQL için en popüler python modülüdür.

  • Birçok Python ve Postgres frameworku ile hali hazırda kullanılan kütüphanedir.

  • Python 3 ve Python 2 sürümleri ile sorunsuz çalışır

Özet bilgilerden sonra ilk işimiz Psycopg2 modülünü kurmak olsun.

pip install psycopg2

Artık kütüphanemizi kurduğumuza göre projemize kütüphaneyi dahil edebiliriz. Bunu yapabilmek için dosyamızın en üstüne aşağıdaki kodu ekleyelim:

import psycopg2

Kütüphaneyi indirip projemize dahil ettikten sonra artık örneklerimize başlayabiliriz.

2. PostgreSQL Veritabanı Bağlantısı

Artık veritabanımıza bağlantımızı yapacak bilgileri oluşturmanın zamanı geldi. Bunun için aşağıdaki kod blogunu ekleyerek kullanıcı adı, şifre ve veritabanı adını kendinize göre düzenlemelisiniz:

db = psycopg2.connect(user = "kullanici_adi",
password = "sifre",
host = "localhost",
port = "5432",
database = "veritabani_adi")

3. İmleç Oluşturma

Veritabanı bağlantısı ile komutlarımızı gönderebilmek için aracı bir imleç oluşturmamız gerekiyor. İmleç oluşturmak için aşağıdaki kodları kullanabilirsiniz.

imlec = db.cursor()

Buraya kadar olan işlemlerin doğruluğunu test etmek için aşağıdaki komut ile bağlantı bilgilerimizi ekrana yazdıralım.

print( db.get_dsn_parameters() )

Ekran çıktımız aşağıdaki gibi olmalıdır.

Python ile PostgreSQL veritabanı bağlantısını başarıyla yaptıktan sonra artık işlemlerimize geçebiliriz.

4. CREATE İle Tablo Oluşturma İşlemi

Temel işlemlerden başladığımıza göre ilk olarak üzerinde çalışabileceğimiz basit bir tablo oluşturalım ve bu tablonun adını isimler olarak belirleyelim. Tablomuzun yapısı ve bu tabloyu oluşturacak CREATE komutu şu şekilde olacaktır.

SÜTUN ADI

TİP

ÖZELLİKLER

id

integer

Primary Key, Auto Increment

ad

text

Not NULL

soyad

text

Not NULL

komut_CREATE = """ CREATE TABLE isimler(
id SERIAL PRIMARY KEY,
ad TEXT NOT NULL,
soyad TEXT NOT NULL
);
"""
imlec.execute(komut_CREATE)
db.commit()

Burada SQL komutumuzu yazdıktan sonra execute() fonksiyonu ile çalıştırıyoruz ve değişikliklerin veritabanı üzerinde de yapılması için commit() fonksiyonu ile işlemi tamamlıyoruz.

Tablomuz hazır, temel işlemlere başlayabiliriz.

5. INSERT İle Tabloya Veri Ekleme İşlemi

Oluşturduğumuz isimler tablosuna diğer başlıklarda kullanmak üzere birkaç örnek veri ekleyelim. Bunun için INSERT komutunu kullanıyoruz.

komut_INSERT = "INSERT INTO isimler(ad,soyad) VALUES('Fatih','TÜRK');"
imlec.execute(komut_INSERT)
db.commit()

Bu şekilde birkaç satır ekleyelim ve tablomuzu kontrol edelim.

6. SELECT İle Tablodan Verileri Alma İşlemi

En çok kullanılan komut olan SELECT ile devam edelim. Bunun için örnek olarak oluşturduğumuz isimler tablosunu çekerek ekrana yazdıralım:

komut_SELECT = "SELECT * FROM isimler;"
imlec.execute(komut_SELECT)
liste = imlec.fetchall()
for i in liste:
print(i)

Bu komut ile ekran çıktımız şu şekilde olacaktır.

fetchall() fonksiyonu ile execute() fonksiyonu sayesinde işlediğimiz SQL komutunun çıktısını bir diziye atmış olduk. Bu diziyi de for döngüsü ile ekrana yazdırdık. Dönen dizide sütun isimlerine göre yazdırma işlemi yapmak istiyorsak ta aşağıdaki komutu kullanabiliriz.

komut_SELECT = "SELECT * FROM isimler;"
imlec.execute(komut_SELECT)
liste = imlec.fetchall()
for i in liste:
print("ID:",i[0]," | ","AD:",i[1]," | ","SOYAD:",i[2]," | ")

Ekran çıktımız ise şu şekilde olacaktır.

NOT: Sorgu sonucunda tüm satırları çekmek için fetchall(), tüm satırlar yerine tek satır almak istiyorsanız fetchone(), belirli sayıda satır çekmek istiyorsanız da fetchmany(SIZE) fonksiyonunu kullanabilirsiniz.

7. UPDATE İle Veri Güncelleme İşlemi

Şimdi geldik tablomuzdaki mevcut bir değeri güncellemeye. Bu işlem için UPDATE komutunu kullanacağız. Aşağıdaki örneği hemen incelemeye başlayabilirsiniz:

komut_UPDATE = "UPDATE isimler SET ad='Abdullah' WHERE id=1;"
imlec.execute(komut_UPDATE)
db.commit()

id sütun değeri 1 olan hücrede ki "Furkan" değerini "Abdullah" ile değiştirdiğimiz komut sonucu tablomuz şu şekilde olacaktır.

8. DELETE İle Veri Silme İşlemi

Tablomuzdan bir değer silmek istersek DELETE komutunu kullanabiliriz. Hemen örneğimizi görelim.

komut_DELETE = "DELETE FROM isimler WHERE id=2;"
imlec.execute(komut_DELETE)
db.commit()

Ardından tablomuzun yeni hali şu şekilde olacaktır.

9. SONUÇ

Bu yazımızda Python ile PostreSQL veritabanı bağlantısını ve temel işlemleri nasıl yapabileceğimizi öğrendik. Bunu yaparken de işin temelinin SQL komutlarımızı sorunsuz bir şekilde hazırlayıp execute() fonksiyonuyla bağlantısını tamamladığımız veritabanımıza göndermek olduğunu ve ardından işlemlerin veritabanı kısmında da gerçekleşmesi için commit() ettiğimizi gördünüz. Sizde daha gelişmiş işlerinizde yukarıdaki örnekleri baz alabilir, takıldığınız yerleri aşağıya yorum bırakarak sorabilirsiniz.