Python - bazy danych i SQL

Język programowania Python ma zaawansowane funkcje do programowania baz danych. Python obsługuje różne bazy danych, takie jak SQLite, MySQL, Oracle, Sybase, PostgreSQL itp. Python obsługuje również język definicji danych (DDL), język manipulacji danymi (DML) i instrukcje zapytań danych. Standardem Pythona dla interfejsów baz danych jest Python DB-API. Większość interfejsów baz danych Pythona jest zgodnych z tym standardem.

Oto lista dostępnych interfejsów baz danych Pythona : Python Database Interfaces and APIs . Musisz pobrać oddzielny moduł DB API dla każdej bazy danych, do której chcesz uzyskać dostęp.

W tym rozdziale zobaczymy wykorzystanie bazy danych SQLite w języku programowania Python. Odbywa się to za pomocą wbudowanego modułu sqlite3 języka Python. Najpierw należy utworzyć obiekt połączenia, który reprezentuje bazę danych, a następnie utworzyć kilka obiektów kursora do wykonywania instrukcji SQL.

Połącz się z bazą danych

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

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

Tutaj możesz także podać nazwę bazy danych jako nazwę specjalną :memory:aby stworzyć bazę danych w pamięci RAM. Teraz uruchommy powyższy program, aby utworzyć naszą bazę danychtest.dbw bieżącym katalogu. Możesz zmienić ścieżkę zgodnie z wymaganiami. Zachowaj powyższy kod w pliku sqlite.py i wykonaj go, jak pokazano poniżej. Jeśli baza danych zostanie pomyślnie utworzona, wyświetli następujący komunikat.

$chmod +x sqlite.py $./sqlite.py
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 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()

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

Opened database successfully
Table created successfully

Operacja wstawiania

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

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

Po wykonaniu powyższego programu utworzy 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 pobrać i wyświetlić rekordy z tabeli COMPANY utworzonej w powyższym przykładzie.

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

Wykonanie powyższego programu 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 aktualizacji

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

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

Wykonanie powyższego programu 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

Usuń operację

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

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

Wykonanie powyższego programu 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