Python SQLite - aktualizacja tabeli
UPDATE Operacja na dowolnej bazie danych oznacza modyfikację wartości jednego lub więcej rekordów tabeli, które są już dostępne w bazie danych. Możesz zaktualizować wartości istniejących rekordów w SQLite za pomocą instrukcji UPDATE.
Aby zaktualizować określone wiersze, musisz użyć wraz z nią klauzuli WHERE.
Składnia
Poniżej znajduje się składnia instrukcji UPDATE w SQLite -
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
Przykład
Załóżmy, że utworzyliśmy tabelę o nazwie CRICKETERS, używając następującego zapytania -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
A jeśli wstawiliśmy do niego 5 rekordów, używając instrukcji INSERT jako -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
Następujące zdanie modyfikuje wiek krykiecisty, którego imię brzmi Shikhar -
sqlite> UPDATE CRICKETERS SET AGE = 45 WHERE FIRST_NAME = 'Shikhar' ;
sqlite>
Jeśli odzyskasz rekord, którego FIRST_NAME to Shikhar, zauważysz, że wartość wieku została zmieniona na 45 -
sqlite> SELECT * FROM CRICKETERS WHERE FIRST_NAME = 'Shikhar';
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Shikhar Dhawan 45 Delhi India
sqlite>
Jeśli nie użyłeś klauzuli WHERE, wartości wszystkich rekordów zostaną zaktualizowane. Kolejne polecenie UPDATE zwiększa wiek wszystkich rekordów w tabeli CRICKETERS o 1 -
sqlite> UPDATE CRICKETERS SET AGE = AGE+1;
sqlite>
Jeśli pobierzesz zawartość tabeli za pomocą polecenia SELECT, możesz zobaczyć zaktualizowane wartości jako -
sqlite> SELECT * FROM CRICKETERS;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Shikhar Dhawan 46 Delhi India
Jonathan Trott 39 CapeTown SouthAfrica
Kumara Sangakkara 42 Matale Srilanka
Virat Kohli 31 Delhi India
Rohit Sharma 33 Nagpur India
sqlite>
Aktualizowanie istniejących rekordów za pomocą języka Python
Aby dodać rekordy do istniejącej tabeli w bazie danych SQLite -
Importuj pakiet sqlite3.
Utwórz obiekt połączenia za pomocą metody connect () , przekazując nazwę bazy danych jako parametr.
Plik cursor()metoda zwraca obiekt kursora, za pomocą którego można komunikować się z SQLite3. Utwórz obiekt kursora, wywołując obiekt kursora () na (utworzonym powyżej) obiekcie Connection.
Następnie wywołaj metodę execute () na obiekcie kursora, przekazując do niego instrukcję UPDATE jako parametr.
Przykład
Na przykładzie Pythona tworzy tabelę o nazwie PRACOWNIK, wstawia do niej 5 rekordów i zwiększa wiek wszystkich pracowników płci męskiej o 1 -
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating table as per requirement
sql ='''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)'''
cursor.execute(sql)
#Inserting data
cursor.execute('''INSERT INTO EMPLOYEE
(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES
('Ramya', 'Rama priya', 27, 'F', 9000),
('Vinay', 'Battacharya', 20, 'M', 6000),
('Sharukh', 'Sheik', 25, 'M', 8300),
('Sarmista', 'Sharma', 26, 'F', 10000),
('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()
#Fetching all the rows before the update
print("Contents of the Employee table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())
#Updating the records
sql = '''UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX = 'M' '''
cursor.execute(sql)
print("Table updated...... ")
#Fetching all the rows after the update
print("Contents of the Employee table after the update operation: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Wynik
Contents of the Employee table:
[('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 20, 'M', 6000.0),
('Sharukh', 'Sheik', 25, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)]
Table updated......
Contents of the Employee table after the update operation:
[('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 21, 'M', 6000.0),
('Sharukh', 'Sheik', 26, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)]