PostgreSQL - interfejs Pythona

Instalacja

PostgreSQL można zintegrować z Pythonem za pomocą modułu psycopg2. sycopg2 to adapter bazy danych PostgreSQL dla języka programowania Python. psycopg2 został napisany z zamiarem bycia bardzo małym, szybkim i stabilnym jak skała. Nie musisz instalować tego modułu oddzielnie, ponieważ jest on dostarczany domyślnie wraz z wersją Python 2.5.x.

Jeśli nie masz go zainstalowanego na swoim komputerze, możesz użyć polecenia yum, aby go zainstalować w następujący sposób -

$yum install python-psycopg2

Aby użyć modułu psycopg2, musisz najpierw utworzyć obiekt Connection, który reprezentuje bazę danych, a następnie opcjonalnie możesz utworzyć obiekt kursora, który pomoże ci w wykonywaniu wszystkich instrukcji SQL.

API modułu psycopg2 w Pythonie

Poniżej znajdują się ważne procedury modułu psycopg2, które mogą wystarczyć do pracy z bazą danych PostgreSQL z poziomu programu w Pythonie. Jeśli szukasz bardziej wyrafinowanej aplikacji, możesz zajrzeć do oficjalnej dokumentacji modułu psycopg2 Pythona.

S. Nie. API i opis
1

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

To API otwiera połączenie z bazą danych PostgreSQL. Jeśli baza danych zostanie otwarta pomyślnie, zwraca obiekt połączenia.

2

connection.cursor()

Ta procedura tworzy plik cursor które będą używane przez cały czas programowania bazy danych w Pythonie.

3

cursor.execute(sql [, optional parameters])

Ta procedura wykonuje instrukcję SQL. Instrukcja SQL może być sparametryzowana (tj. Symbole zastępcze zamiast literałów SQL). Moduł psycopg2 obsługuje symbole zastępcze przy użyciu znaku% s

Na przykład: kursor.execute ("wstaw do wartości osób (% s,% s)", (kto, wiek))

4

cursor.executemany(sql, seq_of_parameters)

Ta procedura wykonuje polecenie SQL na wszystkich sekwencjach parametrów lub odwzorowaniach znalezionych w sekwencji sql.

5

cursor.callproc(procname[, parameters])

Ta procedura wykonuje procedurę przechowywanej bazy danych o podanej nazwie. Sekwencja parametrów musi zawierać jedną pozycję dla każdego argumentu, którego oczekuje procedura.

6

cursor.rowcount

Ten atrybut tylko do odczytu, który zwraca całkowitą liczbę wierszy bazy danych, które zostały zmodyfikowane, wstawione lub usunięte przez ostatnie wykonanie * ().

7

connection.commit()

Ta metoda zatwierdza bieżącą transakcję. Jeśli nie wywołasz tej metody, wszystko, co zrobiłeś od ostatniego wywołania funkcji commit (), nie jest widoczne z innych połączeń z bazą danych.

8

connection.rollback()

Ta metoda cofa wszelkie zmiany w bazie danych od ostatniego wywołania funkcji commit ().

9

connection.close()

Ta metoda zamyka połączenie z bazą danych. Zwróć uwagę, że nie wywołuje to automatycznie funkcji commit (). Jeśli po prostu zamkniesz połączenie z bazą danych bez uprzedniego wywołania funkcji commit (), zmiany zostaną utracone!

10

cursor.fetchone()

Ta metoda pobiera następny wiersz zestawu wyników zapytania, zwracając pojedynczą sekwencję lub None, gdy nie ma więcej danych.

11

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

Ta procedura pobiera następny zestaw wierszy wyniku zapytania, zwracając listę. Pusta lista jest zwracana, gdy nie ma więcej dostępnych wierszy. Metoda próbuje pobrać tyle wierszy, ile wskazuje parametr size.

12

cursor.fetchall()

Ta procedura pobiera wszystkie (pozostałe) wiersze wyniku zapytania, zwracając listę. W przypadku braku dostępnych wierszy zwracana jest pusta lista.

Łączenie się z bazą danych

Poniższy kod w języku Python pokazuje, jak połączyć się z istniejącą bazą danych. Jeśli baza danych nie istnieje, to zostanie utworzona i na koniec zostanie zwrócony obiekt bazy danych.

#!/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"

Tutaj możesz również dostarczyć bazę danych testdb jako nazwa i jeśli baza danych zostanie pomyślnie otwarta, to wyświetli następujący komunikat -

Open database successfully

Utwórz tabelę

Poniższy program w Pythonie zostanie użyty do stworzenia tabeli we wcześniej utworzonej bazie danych -

#!/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()

Po wykonaniu powyższego programu utworzy on tabelę COMPANY w Twoim test.db i wyświetli następujące komunikaty -

Opened database successfully
Table created successfully

Operacja INSERT

Poniższy program w Pythonie pokazuje, jak możemy tworzyć rekordy w naszej tabeli COMPANY utworzonej w powyższym przykładzie -

#!/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()

Po wykonaniu powyższego programu utworzy on podane rekordy w tabeli COMPANY i wyświetli następujące dwie linie -

Opened database successfully
Records created successfully

Wybierz operację

Poniższy program w Pythonie pokazuje, jak możemy pobrać i wyświetlić rekordy z naszej tabeli COMPANY utworzonej w powyższym przykładzie -

#!/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()

Gdy powyższy program zostanie wykonany, da następujący wynik -

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

Operacja UPDATE

Poniższy kod Pythona pokazuje, jak możemy użyć instrukcji UPDATE do zaktualizowania dowolnego rekordu, a następnie pobrać i wyświetlić zaktualizowane rekordy z naszej tabeli COMPANY -

#!/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()

Gdy powyższy program zostanie wykonany, da następujący wynik -

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

Operacja USUŃ

Poniższy kod Pythona pokazuje, jak możemy użyć instrukcji DELETE, aby usunąć dowolny rekord, a następnie pobrać i wyświetlić pozostałe rekordy z naszej tabeli COMPANY -

#!/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()

Gdy powyższy program zostanie wykonany, da następujący wynik -

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