Python - Veritabanları ve SQL

Python programlama dili, veritabanı programlama için güçlü özelliklere sahiptir. Python, SQLite, MySQL, Oracle, Sybase, PostgreSQL vb. Gibi çeşitli veritabanlarını destekler. Python ayrıca Veri Tanımlama Dili (DDL), Veri Manipülasyon Dili (DML) ve Veri Sorgu İfadelerini destekler. Veritabanı arayüzleri için Python standardı, Python DB-API'dir. Çoğu Python veritabanı arayüzü bu standarda uymaktadır.

Kullanılabilir Python veritabanı arayüzlerinin listesi: Python Veritabanı Arayüzleri ve API'ler . Erişmeniz gereken her veritabanı için ayrı bir DB API modülü indirmelisiniz.

Bu bölümde SQLite veritabanının python programlama dilinde kullanımını göreceğiz. Python'un dahili, sqlite3 modülü kullanılarak yapılır. Öncelikle veritabanını temsil eden bir bağlantı nesnesi oluşturmalı ve ardından SQL ifadelerini yürütmek için bazı imleç nesneleri oluşturmalısınız.

Veritabanına Bağlan

Aşağıdaki Python kodu, mevcut bir veritabanına nasıl bağlanılacağını gösterir. Veritabanı yoksa, o zaman oluşturulur ve son olarak bir veritabanı nesnesi döndürülür.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";

Burada, veritabanı adını özel ad olarak da verebilirsiniz. :memory:RAM'de bir veritabanı oluşturmak için. Şimdi, veritabanımızı oluşturmak için yukarıdaki programı çalıştıralım.test.dbmevcut dizinde. Yolunuzu ihtiyacınıza göre değiştirebilirsiniz. Yukarıdaki kodu sqlite.py dosyasında saklayın ve aşağıda gösterildiği gibi çalıştırın. Veritabanı başarıyla oluşturulduysa, aşağıdaki mesajı gösterecektir.

$chmod +x sqlite.py $./sqlite.py
Open database successfully

Tablo Oluşturun

Aşağıdaki Python programı, daha önce oluşturulan veritabanında bir tablo oluşturmak için kullanılacaktır.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute('''CREATE TABLE COMPANY
         (ID INT PRIMARY KEY     NOT NULL,
         NAME           TEXT    NOT NULL,
         AGE            INT     NOT NULL,
         ADDRESS        CHAR(50),
         SALARY         REAL);''')
print "Table created successfully";
conn.close()

Yukarıdaki program yürütüldüğünde, bilgisayarınızda ŞİRKET tablosunu oluşturacaktır. test.db ve aşağıdaki mesajları gösterecektir -

Opened database successfully
Table created successfully

İşlem Ekle

Aşağıdaki Python programı, yukarıdaki örnekte oluşturulan COMPANY tablosunda kayıtların nasıl oluşturulacağını gösterir.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
conn.commit()
print "Records created successfully";
conn.close()

Yukarıdaki program çalıştırıldığında, FİRMA tablosunda verilen kayıtları oluşturacak ve aşağıdaki iki satırı görüntüleyecektir -

Opened database successfully
Records created successfully

İşlemi Seçin

Aşağıdaki Python programı, yukarıdaki örnekte oluşturulan COMPANY tablosundan kayıtların nasıl getirileceğini ve görüntüleneceğini gösterir.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verecektir.

Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully

Güncelleme İşlemi

Aşağıdaki Python kodu, herhangi bir kaydı güncellemek için UPDATE ifadesinin nasıl kullanılacağını ve ardından güncellenmiş kayıtları COMPANY tablosundan alıp görüntülemeyi gösterir.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit
print "Total number of rows updated :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verecektir.

Opened database successfully
Total number of rows updated : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000.0
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully

İşlemi Sil

Aşağıdaki Python kodu, herhangi bir kaydı silmek için DELETE ifadesinin nasıl kullanılacağını ve ardından kalan kayıtları COMPANY tablosundan alıp görüntülemeyi gösterir.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("DELETE from COMPANY where ID = 2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()

Yukarıdaki program yürütüldüğünde, aşağıdaki sonucu verecektir.

Opened database successfully
Total number of rows deleted : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully