PostgreSQL - Python Arayüzü

Kurulum

PostgreSQL, psycopg2 modülü kullanılarak Python ile entegre edilebilir. sycopg2, Python programlama dili için bir PostgreSQL veritabanı adaptörüdür. psycopg2, çok küçük ve hızlı olması ve bir kaya gibi stabil olması amacıyla yazılmıştır. Varsayılan olarak Python sürüm 2.5.x ile birlikte gönderildiği için bu modülü ayrı olarak kurmanıza gerek yoktur.

Makinenize kurulu değilse, aşağıdaki gibi kurmak için yum komutunu kullanabilirsiniz -

$yum install python-psycopg2

Psycopg2 modülünü kullanmak için, önce veritabanını temsil eden bir Connection nesnesi oluşturmanız ve ardından isteğe bağlı olarak tüm SQL ifadelerini çalıştırmanıza yardımcı olacak bir imleç nesnesi oluşturmanız gerekir.

Python psycopg2 modülü API'leri

Aşağıdakiler, Python programınızdan PostgreSQL veritabanı ile çalışma gereksiniminizi karşılayabilecek önemli psycopg2 modül rutinleri. Daha karmaşık bir uygulama arıyorsanız, Python psycopg2 modülünün resmi belgelerine bakabilirsiniz.

S. No. API ve Açıklama
1

psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")

Bu API, PostgreSQL veritabanına bir bağlantı açar. Veritabanı başarıyla açılırsa, bir bağlantı nesnesi döndürür.

2

connection.cursor()

Bu rutin bir cursor Python ile veritabanı programlamanızın tamamında kullanılacak.

3

cursor.execute(sql [, optional parameters])

Bu rutin bir SQL ifadesi yürütür. SQL ifadesi parametreleştirilebilir (yani SQL değişmezleri yerine yer tutucular). Psycopg2 modülü,% s işaretini kullanan yer tutucuyu destekler

Örneğin: cursor.execute ("kişi değerlerine ekle (% s,% s)", (kim, yaş))

4

cursor.executemany(sql, seq_of_parameters)

Bu rutin, sql dizisinde bulunan tüm parametre dizileri veya eşlemelerine karşı bir SQL komutu yürütür.

5

cursor.callproc(procname[, parameters])

Bu rutin, verilen adla bir saklı veritabanı prosedürünü yürütür. Parametre dizisi, prosedürün beklediği her bağımsız değişken için bir giriş içermelidir.

6

cursor.rowcount

Son çalıştırma * () tarafından değiştirilen, eklenen veya silinen veritabanı satırlarının toplam sayısını döndüren bu salt okunur özellik.

7

connection.commit()

Bu yöntem, mevcut işlemi taahhüt eder. Bu yöntemi çağırmazsanız, son commit () çağrısından sonra yaptığınız hiçbir şey diğer veritabanı bağlantılarından görünmez.

8

connection.rollback()

Bu yöntem, son commit () çağrısından bu yana veritabanında yapılan değişiklikleri geri alır.

9

connection.close()

Bu yöntem, veritabanı bağlantısını kapatır. Bunun otomatik olarak commit () öğesini çağırmadığını unutmayın. İlk önce commit () 'i çağırmadan veritabanı bağlantınızı kapatırsanız, değişiklikleriniz kaybolacak!

10

cursor.fetchone()

Bu yöntem, bir sorgu sonuç kümesinin sonraki satırını getirir, tek bir sıra döndürür veya daha fazla veri olmadığında Hiçbiri döndürür.

11

cursor.fetchmany([size=cursor.arraysize])

Bu rutin, bir sorgu sonucunun sonraki satır kümesini getirerek bir liste döndürür. Başka satır olmadığında boş bir liste döndürülür. Yöntem, size parametresinin belirttiği kadar çok satırı getirmeye çalışır.

12

cursor.fetchall()

Bu rutin, bir sorgu sonucunun tüm (kalan) satırlarını alır ve bir liste döndürür. Kullanılabilir satır olmadığında boş bir liste döndürülür.

Veritabanına Bağlanma

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 psycopg2

conn = psycopg2.connect(database="testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")

print "Opened database successfully"

Burada ayrıca veritabanı sağlayabilirsiniz testdb isim olarak ve veritabanı başarıyla açılırsa, aşağıdaki mesajı verecektir -

Open database successfully

Tablo Oluşturun

Aşağıdaki Python programı, önceden oluşturulmuş veritabanında bir tablo oluşturmak için kullanılacaktır -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()
cur.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.commit()
conn.close()

Yukarıda verilen program çalıştırıldığında, programınızda ŞİRKET tablosu oluşturacaktır. test.db ve aşağıdaki mesajları gösterecektir -

Opened database successfully
Table created successfully

INSERT İşlemi

Aşağıdaki Python programı, yukarıdaki örnekte oluşturulan COMPANY tablomuzda nasıl kayıt oluşturabileceğimizi göstermektedir -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

cur.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ıda verilen program çalıştırıldığında, ŞİRKET tablosunda verilen kayıtları oluşturacak ve aşağıdaki iki satırı görüntüleyecektir -

Opened database successfully
Records created successfully

SELECT İşlemi

Aşağıdaki Python programı, yukarıdaki örnekte oluşturulan COMPANY tablomuzdan kayıtları nasıl getirip görüntüleyebileceğimizi gösterir -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

Yukarıda verilen 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 deyimini nasıl kullanabileceğimizi ve ardından güncellenmiş kayıtları COMPANY tablomuzdan alıp görüntüleyebileceğimizi gösterir -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit()
print "Total number of rows updated :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

Yukarıda verilen 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

DELETE İşlemi

Aşağıdaki Python kodu, herhangi bir kaydı silmek için DELETE ifadesini nasıl kullanabileceğimizi ve ardından kalan kayıtları COMPANY tablomuzdan alıp görüntüleyebileceğimizi gösterir -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

Yukarıda verilen 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