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