Python PostgreSQL - Tabloyu Güncelle
UPDATE deyimini kullanarak PostgreSQL'deki bir tablonun mevcut kayıtlarının içeriğini değiştirebilirsiniz. Belirli satırları güncellemek için, onunla birlikte WHERE yan tümcesini kullanmanız gerekir.
Sözdizimi
PostgreSQL'de UPDATE deyiminin sözdizimi aşağıdadır -
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
Misal
Aşağıdaki sorguyu kullanarak CRICKETERS adında bir tablo oluşturduğumuzu varsayalım -
postgres=# CREATE TABLE CRICKETERS (
First_Name VARCHAR(255), Last_Name VARCHAR(255),
Age int, Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);
CREATE TABLE
postgres=#
Ve INSERT ifadelerini kullanarak 5 kayıt eklediysek -
postgres=# insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
postgres=# insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
INSERT 0 1
postgres=# insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
INSERT 0 1
Aşağıdaki ifade, ilk adı olan kriket oyuncunun yaşını değiştirir. Shikhar -
postgres=# UPDATE CRICKETERS SET AGE = 45 WHERE FIRST_NAME = 'Shikhar' ;
UPDATE 1
postgres=#
FIRST_NAME Şikhar olan kaydı alırsanız, yaş değerinin 45 olarak değiştirildiğini görürsünüz -
postgres=# SELECT * FROM CRICKETERS WHERE FIRST_NAME = 'Shikhar';
first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+---------
Shikhar | Dhawan | 45 | Delhi | India
(1 row)
postgres=#
WHERE yan tümcesini kullanmadıysanız, tüm kayıtların değerleri güncellenecektir. UPDATE ifadesinin ardından, CRICKETERS tablosundaki tüm kayıtların yaşı 1 artar -
postgres=# UPDATE CRICKETERS SET AGE = AGE+1;
UPDATE 5
SELECT komutunu kullanarak tablonun içeriğini alırsanız, güncellenmiş değerleri şu şekilde görebilirsiniz -
postgres=# SELECT * FROM CRICKETERS;
first_name | last_name | age | place_of_birth | country
------------+------------+-----+----------------+-------------
Jonathan | Trott | 39 | CapeTown | SouthAfrica
Kumara | Sangakkara | 42 | Matale | Srilanka
Virat | Kohli | 31 | Delhi | India
Rohit | Sharma | 33 | Nagpur | India
Shikhar | Dhawan | 46 | Delhi | India
(5 rows)
Python kullanarak kayıtları güncelleme
Psycopg2'nin imleç sınıfı execute () adıyla bir yöntem sağlar. Bu yöntem, sorguyu bir parametre olarak kabul eder ve çalıştırır.
Bu nedenle, python kullanarak PostgreSQL'de bir tabloya veri eklemek -
İthalat psycopg2 paketi.
Kullanarak bir bağlantı nesnesi oluşturun connect() yöntem, kullanıcı adını, parolayı, ana bilgisayarı (isteğe bağlı varsayılan: localhost) ve veritabanını (isteğe bağlı) parametre olarak ona ileterek.
Özniteliğe değer olarak false değerini ayarlayarak otomatik kesinleştirme modunu kapatın autocommit.
cursor() yöntemi Connectionpsycopg2 kütüphanesinin sınıfı bir imleç nesnesi döndürür. Bu yöntemi kullanarak bir imleç nesnesi oluşturun.
Ardından, UPDATE deyimini bir parametre olarak execute () yöntemine ileterek yürütün.
Misal
Python kodunu takiben, Çalışan tablosunun içeriğini günceller ve sonuçları alır -
import psycopg2
#establishing the connection
conn = psycopg2.connect(
database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)
#Setting auto commit false
conn.autocommit = True
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Fetching all the rows before the update
print("Contents of the Employee table: ")
sql = '''SELECT * from EMPLOYEE'''
cursor.execute(sql)
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: ")
sql = '''SELECT * from EMPLOYEE'''
cursor.execute(sql)
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Çıktı
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),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0),
('Vinay', 'Battacharya', 21, 'M', 6000.0),
('Sharukh', 'Sheik', 26, 'M', 8300.0)]