Python PostgreSQL - Verileri Seç

SELECT deyimini kullanarak PostgreSQL'de mevcut bir tablonun içeriğini geri alabilirsiniz. Bu ifadede, tablonun adını belirtmeniz gerekir ve içindekileri sonuç kümesi olarak bilinen tablo biçiminde döndürür.

Sözdizimi

PostgreSQL'deki SELECT ifadesinin sözdizimi aşağıdadır -

SELECT column1, column2, columnN FROM table_name;

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 SELECT sorgusu, CRICKETERS tablosundan FIRST_NAME, LAST_NAME ve COUNTRY sütunlarının değerlerini alır.

postgres=# SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
first_name  | last_name  | country
------------+------------+-------------
Shikhar     | Dhawan     | India
Jonathan    | Trott      | SouthAfrica
Kumara      | Sangakkara | Srilanka
Virat       | Kohli      | India
Rohit       | Sharma     | India
(5 rows)

Her kaydın tüm sütunlarını geri almak istiyorsanız, aşağıda gösterildiği gibi sütunların adlarını "*" ile değiştirmeniz gerekir -

postgres=# SELECT * FROM CRICKETERS;
first_name  | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+-------------
Shikhar     | Dhawan     | 33  | Delhi          | India
Jonathan    | Trott      | 38  | CapeTown       | SouthAfrica
Kumara      | Sangakkara | 41  | Matale         | Srilanka
Virat       | Kohli      | 30  | Delhi          | India
Rohit       | Sharma     | 32  | Nagpur         | India
(5 rows)
postgres=#

Python kullanarak verileri alma

Herhangi bir veritabanı üzerinde READ İşlemi, veritabanından bazı yararlı bilgileri almak anlamına gelir. Psycopg2 tarafından sağlanan fetch () yöntemini kullanarak PostgreSQL'den veri alabilirsiniz.

Cursor sınıfı, fetchall (), fetchmany () ve fetchone () olmak üzere üç yöntem sağlar; burada,

  • Fetchall () yöntemi, bir sorgunun sonuç kümesindeki tüm satırları alır ve bunları demetler listesi olarak döndürür. (Bunu birkaç satırı aldıktan sonra yürütürsek, kalanları döndürür).

  • Fetchone () yöntemi, bir sorgunun sonucundaki sonraki satırı getirir ve bunu bir demet olarak döndürür.

  • Fetchmany () yöntemi fetchone () yöntemine benzer, ancak tek bir satır yerine bir sorgunun sonuç kümesindeki sonraki satır kümesini alır.

Note - Sonuç kümesi, bir tabloyu sorgulamak için bir imleç nesnesi kullanıldığında döndürülen bir nesnedir.

Misal

Aşağıdaki Python programı, Mydb of PostgreSQL adlı bir veritabanına bağlanır ve EMPLOYEE adlı bir tablodan tüm kayıtları 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()

#Retrieving data
cursor.execute('''SELECT * from EMPLOYEE''')

#Fetching 1st row from the table
result = cursor.fetchone();
print(result)

#Fetching 1st row from the table
result = cursor.fetchall();
print(result)

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Çıktı

('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)]