Python PostgreSQL - Hızlı Kılavuz

PostgreSQL güçlü, açık kaynaklı bir nesne-ilişkisel veritabanı sistemidir. 15 yıldan fazla aktif geliştirme aşamasına ve kendisine güvenilirlik, veri bütünlüğü ve doğruluk açısından güçlü bir itibar kazandıran kanıtlanmış bir mimariye sahiptir.

Python kullanarak PostgreSQL ile iletişim kurmak için python programlaması için sağlanan bir adaptör olan psycopg'yi kurmanız gerekir, bunun şu anki sürümü psycog2.

psycopg2, çok küçük ve hızlı olması ve bir kaya gibi kararlı olması amacıyla yazılmıştır. PIP (python paket yöneticisi) altında mevcuttur

PIP kullanarak Psycog2'yi kurma

Her şeyden önce, python ve PIP'in sisteminize doğru bir şekilde yüklendiğinden ve PIP'in güncel olduğundan emin olun.

PIP'yi yükseltmek için komut istemini açın ve aşağıdaki komutu çalıştırın -

C:\Users\Tutorialspoint>python -m pip install --upgrade pip
Collecting pip
   Using cached 
https://files.pythonhosted.org/packages/8d/07/f7d7ced2f97ca3098c16565efbe6b15fafcba53e8d9bdb431e09140514b0/pip-19.2.2-py2.py3-none-any.whl
Installing collected packages: pip
   Found existing installation: pip 19.0.3
      Uninstalling pip-19.0.3:
         Successfully uninstalled pip-19.0.3
Successfully installed pip-19.2.2

Ardından, yönetici modunda komut istemini açın ve pip install psycopg2-binary komut aşağıda gösterildiği gibi -

C:\WINDOWS\system32>pip install psycopg2-binary
Collecting psycopg2-binary
   Using cached 
https://files.pythonhosted.org/packages/80/79/d0d13ce4c2f1addf4786f4a2ded802c2df66ddf3c1b1a982ed8d4cb9fc6d/psycopg2_binary-2.8.3-cp37-cp37m-win32.whl
Installing collected packages: psycopg2-binary
Successfully installed psycopg2-binary-2.8.3

Doğrulama

Kurulumu doğrulamak için aşağıdaki satırı içeren örnek bir python betiği oluşturun.

import mysql.connector

Kurulum başarılı olursa, çalıştırdığınızda herhangi bir hata almamalısınız -

D:\Python_PostgreSQL>import psycopg2
D:\Python_PostgreSQL>

PostgreSQL, sorguları yürütmek için kendi kabuğunu sağlar. PostgreSQL veritabanıyla bağlantı kurmak için, onu sisteminize doğru bir şekilde kurduğunuzdan emin olun. PostgreSQL kabuk istemini açın ve Sunucu, Veritabanı, kullanıcı adı ve şifre gibi ayrıntıları iletin. Verdiğiniz tüm detaylar uygunsa PostgreSQL veritabanı ile bağlantı kurulur.

Ayrıntıları geçerken, varsayılan sunucu, veritabanı, bağlantı noktası ve kabuk tarafından önerilen kullanıcı adı ile gidebilirsiniz.

Python Kullanarak Bağlantı Kurmak

Bağlantı sınıfı psycopg2bir bağlantı örneğini temsil eder / işler. Kullanarak yeni bağlantılar oluşturabilirsiniz.connect()işlevi. Bu, dbname, user, password, host, port gibi temel bağlantı parametrelerini kabul eder ve bir bağlantı nesnesi döndürür. Bu işlevi kullanarak PostgreSQL ile bir bağlantı kurabilirsiniz.

Misal

Aşağıdaki Python kodu, mevcut bir veritabanına nasıl bağlanılacağını gösterir. Veritabanı yoksa, o zaman oluşturulur ve son olarak bir veritabanı nesnesi döndürülür. PostgreSQL'in varsayılan veritabanının adı postrgre'dir. Bu nedenle, onu veritabanı adı olarak sağlıyoruz.

import psycopg2
#establishing the connection
conn = psycopg2.connect(
   database="postgres", user='postgres', password='password', 
   host='127.0.0.1', port= '5432'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Executing an MYSQL function using the execute() method
cursor.execute("select version()")

#Fetch a single row using fetchone() method.
data = cursor.fetchone()
print("Connection established to: ",data)

#Closing the connection
conn.close()
Connection established to: (
   'PostgreSQL 11.5, compiled by Visual C++ build 1914, 64-bit',
)

Çıktı

Connection established to: (
   'PostgreSQL 11.5, compiled by Visual C++ build 1914, 64-bit',
)

CREATE DATABASE deyimini kullanarak PostgreSQL'de bir veritabanı oluşturabilirsiniz. Bu ifadeyi, komuttan sonra oluşturulacak veritabanının adını belirterek PostgreSQL kabuk isteminde çalıştırabilirsiniz.

Sözdizimi

CREATE DATABASE ifadesinin sözdizimi aşağıdadır.

CREATE DATABASE dbname;

Misal

Aşağıdaki ifade PostgreSQL'de testdb adlı bir veritabanı oluşturur.

postgres=# CREATE DATABASE testdb;
CREATE DATABASE

Veritabanını PostgreSQL'de \ l komutunu kullanarak listeleyebilirsiniz. Veritabanlarının listesini doğrularsanız, yeni oluşturulan veritabanını aşağıdaki gibi bulabilirsiniz -

postgres=# \l
                                                List of databases
   Name    | Owner    | Encoding |        Collate             |     Ctype   |
-----------+----------+----------+----------------------------+-------------+
mydb       | postgres | UTF8     | English_United States.1252 | ........... |
postgres   | postgres | UTF8     | English_United States.1252 | ........... |
template0  | postgres | UTF8     | English_United States.1252 | ........... |
template1  | postgres | UTF8     | English_United States.1252 | ........... |
testdb     | postgres | UTF8     | English_United States.1252 | ........... |
(5 rows)

Ayrıca , CREATE DATABASE SQL deyimi etrafında bir sarmalayıcı olan createdb komutunu kullanarak komut isteminden PostgreSQL'de bir veritabanı oluşturabilirsiniz .

C:\Program Files\PostgreSQL\11\bin> createdb -h localhost -p 5432 -U postgres sampledb
Password:

Python Kullanarak Veritabanı Oluşturma

Psycopg2'nin imleç sınıfı, çeşitli PostgreSQL komutlarını yürütmek, kayıtları almak ve verileri kopyalamak için çeşitli yöntemler sağlar. Connection sınıfının cursor () yöntemini kullanarak bir imleç nesnesi oluşturabilirsiniz.

Bu sınıfın execute () yöntemi, bir PostgreSQL sorgusunu parametre olarak kabul eder ve çalıştırır.

Bu nedenle, PostgreSQL'de bir veritabanı oluşturmak için, CREATE DATABASE sorgusunu bu yöntemi kullanarak yürütün.

Misal

Aşağıdaki python örneği PostgreSQL veritabanında mydb adında bir veritabanı oluşturur.

import psycopg2

#establishing the connection

conn = psycopg2.connect(
   database="postgres", user='postgres', password='password', 
   host='127.0.0.1', port= '5432'
)
conn.autocommit = True

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Preparing query to create a database
sql = '''CREATE database mydb''';

#Creating a database
cursor.execute(sql)
print("Database created successfully........")

#Closing the connection
conn.close()

Çıktı

Database created successfully........

PostgreSQL'de bir veritabanında CREATE TABLE deyimini kullanarak yeni bir tablo oluşturabilirsiniz. Bunu yürütürken tablonun adını, sütun adlarını ve veri türlerini belirtmeniz gerekir.

Sözdizimi

Aşağıda PostgreSQL'de CREATE TABLE ifadesinin sözdizimi verilmiştir.

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);

Misal

Aşağıdaki örnek, PostgreSQL'de CRICKETERS adında bir tablo oluşturur.

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=#

PostgreSQL'de bir veritabanındaki tabloların listesini \ dt komutunu kullanarak alabilirsiniz. Bir tablo oluşturduktan sonra, tabloların listesini doğrulayabilirseniz, içindeki yeni oluşturulan tabloyu aşağıdaki gibi gözlemleyebilirsiniz -

postgres=# \dt
         List of relations
Schema  | Name       | Type  | Owner
--------+------------+-------+----------
public  | cricketers | table | postgres
(1 row)
postgres=#

Aynı şekilde, oluşturulan tablonun açıklamasını aşağıda gösterildiği gibi \ d kullanarak alabilirsiniz -

postgres=# \d cricketers
                        Table "public.cricketers"
Column          | Type                   | Collation | Nullable | Default
----------------+------------------------+-----------+----------+---------
first_name      | character varying(255) |           |          |
last_name       | character varying(255) |           |          |
age             | integer                |           |          |
place_of_birth  | character varying(255) |           |          |
country         | character varying(255) |           |          |

postgres=#

Python Kullanarak Tablo Oluşturma

Python kullanarak bir tablo oluşturmak için, Cursor of pyscopg2'nin execute () yöntemini kullanarak CREATE TABLE deyimini yürütmeniz gerekir .

Misal

Aşağıdaki Python örneği, worker adıyla bir tablo oluşturur.

import psycopg2

#Establishing the connection

conn = psycopg2.connect(
   database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)

#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)
print("Table created successfully........")

#Closing the connection
conn.close()

Çıktı

Table created successfully........

PostgreSQL'de mevcut bir tabloya kayıt ekleyebilirsiniz. INSERT INTOBeyan. Bunu yürütürken tablonun adını ve içindeki sütunların değerlerini belirtmeniz gerekir.

Sözdizimi

INSERT ifadesinin önerilen sözdizimi aşağıdadır -

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);

Burada, sütun1, sütun2, sütun3, .. bir tablonun sütunlarının adlarıdır ve değer1, değer2, değer3, ... tabloya eklemeniz gereken değerlerdir.

Misal

Aşağıda gösterildiği gibi CREATE TABLE ifadesini kullanarak CRICKETERS adlı 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=#

Aşağıdaki PostgreSQL ifadesi, yukarıda oluşturulan tabloya bir satır ekler -

postgres=# insert into CRICKETERS 
   (First_Name, Last_Name, Age, Place_Of_Birth, Country) values
   ('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=#

INSERT INTO deyimini kullanarak kayıt eklerken, herhangi bir sütun adını atlarsanız, kayıt, atladığınız sütunlarda boşluk bırakılarak eklenir.

postgres=# insert into CRICKETERS 
   (First_Name, Last_Name, Country) values('Jonathan', 'Trott', 'SouthAfrica');
INSERT 0 1

Ayrıca, ilettiğiniz değerlerin sırası tablodaki ilgili sütun adlarıyla aynıysa, sütun adlarını belirtmeden de tabloya kayıt ekleyebilirsiniz.

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
postgres=#

Kayıtları bir tabloya ekledikten sonra, aşağıda gösterildiği gibi SELECT deyimini kullanarak içeriğini doğrulayabilirsiniz -

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

Python Kullanarak Veri Ekleme

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.

  • Özelliğ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 ..

  • Daha sonra INSERT deyimlerini execute () yöntemine bir parametre olarak ileterek yürütün.

Misal

Aşağıdaki Python programı, PostgreSQL veritabanında EMPLOYEE adlı bir tablo oluşturur ve execute () yöntemini kullanarak bu tabloya kayıtlar ekler -

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

# Preparing SQL queries to INSERT a record into the database.
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Ramya', 'Rama priya', 27, 'F', 9000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Vinay', 'Battacharya', 20, 'M', 6000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Sharukh', 'Sheik', 25, 'M', 8300)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Sarmista', 'Sharma', 26, 'F', 10000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Tripthi', 'Mishra', 24, 'F', 6000)''')

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

print("Records inserted........")

# Closing the connection
conn.close()

Çıktı

Records inserted........

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 bir 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.

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

SELECT, UPDATE veya DELETE işlemlerini gerçekleştirirken, WHERE yan tümcesini kullanarak kayıtları filtrelemek için koşul belirtebilirsiniz. Verilen koşulu sağlayan kayıtlar üzerinde işlem yapılacaktır.

Sözdizimi

PostgreSQL'de WHERE cümlesinin sözdizimi aşağıdadır -

SELECT column1, column2, columnN
FROM table_name
WHERE [search_condition]

Karşılaştırma veya mantıksal işleçleri kullanarak bir search_condition belirtebilirsiniz. >, <, =, LIKE, NOT, vb. gibi. Aşağıdaki örnekler bu kavramı açıklığa kavuşturacaktır.

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 deyimi, yaşı 35'ten büyük olan kayıtları alır -

postgres=# SELECT * FROM CRICKETERS WHERE AGE > 35;
 first_name | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+-------------
Jonathan    | Trott      | 38  | CapeTown       | SouthAfrica
Kumara      | Sangakkara | 41  | Matale         | Srilanka
(2 rows)

postgres=#

Python Kullanan Cümle

Python programını kullanarak bir tablodan belirli kayıtları almak için SELECT deyimini WHERE yan tümcesine bir parametre olarak ileterek yürütün .execute() yöntem.

Misal

Aşağıdaki python örneği, python kullanarak WHERE komutunun kullanımını gösterir.

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

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = '''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT)'''
cursor.execute(sql)

#Populating the table
insert_stmt = "INSERT INTO EMPLOYEE 
   (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)"
data = [('Krishna', 'Sharma', 19, 'M', 2000), ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'M', 5000),('Mac', 'Mohan', 26, 'M', 2000)]
cursor.executemany(insert_stmt, data)

#Retrieving specific records using the where clause
cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23")
print(cursor.fetchall())

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

#Closing the connection
conn.close()

Çıktı

[('Krishna', 'Sharma', 19, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]

Genellikle bir tablodan veri almaya çalışırsanız, kayıtları eklediğiniz sırayla alırsınız.

Kullanmak ORDER BY cümleci, bir tablonun kayıtlarını alırken, elde edilen kayıtları istenen sütuna göre artan veya azalan sırada sıralayabilirsiniz.

Sözdizimi

Aşağıda, PostgreSQL'deki ORDER BY cümlesinin sözdizimi verilmiştir.

SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

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 ifadesi, CRICKETERS tablosunun satırlarını yaşlarının artan sırasına göre alır -

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

Bir tablonun kayıtlarını sıralamak için birden fazla sütun kullanabilirsiniz. Aşağıdaki SELECT ifadeleri, CRICKETERS tablosunun kayıtlarını age ve FIRST_NAME sütunlarına göre sıralar.

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

Varsayılan olarak, ORDER BYyan tümce, bir tablonun kayıtlarını artan sırada sıralar. DESC kullanarak sonuçları azalan sırada düzenleyebilirsiniz -

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

Python Kullanarak Maddeye Göre SİPARİŞ

Bir tablonun içeriğini belirli bir sırayla almak için, imleç nesnesinde execute () yöntemini çağırın ve SELECT deyimini ORDER BY yan tümcesi ile birlikte ona bir parametre olarak iletin.

Misal

Aşağıdaki örnekte, ad ve Çalışan ile bir tablo oluşturuyoruz, onu dolduruyoruz ve ORDER BY cümlesini kullanarak kayıtlarını yaşlarının (artan) sırasına göre geri alıyoruz.

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

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

#Creating a table
sql = '''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT, SEX CHAR(1),
   INCOME INT,
   CONTACT INT)'''
cursor.execute(sql)

#Populating the table
insert_stmt = "INSERT INTO EMPLOYEE 
   (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME, CONTACT) VALUES (%s, %s, %s, %s, %s, %s)"

data = [('Krishna', 'Sharma', 26, 'M', 2000, 101), 
   ('Raj', 'Kandukuri', 20, 'M', 7000, 102),
   ('Ramya', 'Ramapriya', 29, 'F', 5000, 103),
   ('Mac', 'Mohan', 26, 'M', 2000, 104)]
cursor.executemany(insert_stmt, data)
conn.commit()

#Retrieving specific records using the ORDER BY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY AGE")
print(cursor.fetchall())

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

#Closing the connection
conn.close()

Çıktı

[('Sharukh', 'Sheik', 25, 'M', 8300.0), ('Sarmista', 'Sharma', 26, 'F', 10000.0)]

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.

  • Özelliğ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)
]

Mevcut bir tablodaki kayıtları silebilirsiniz. DELETE FROMPostgreSQL veritabanı açıklaması. Belirli kayıtları kaldırmak için, onunla birlikte WHERE cümlesini kullanmanız gerekir.

Sözdizimi

PostgreSQL'de DELETE sorgusunun sözdizimi aşağıdadır -

DELETE FROM table_name [WHERE Clause]

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 açıklama, soyadı 'Sangakkara' olan kriketçinin rekorunu siliyor.

postgres=# DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara';
DELETE 1

SELECT deyimini kullanarak tablonun içeriğini alırsanız, birini sildiğimiz için yalnızca 4 kaydı görebilirsiniz.

postgres=# SELECT * FROM CRICKETERS;
 first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+-------------
Jonathan    |     Trott |  39 | CapeTown       | SouthAfrica
Virat       |     Kohli |  31 | Delhi          | India
Rohit       |    Sharma |  33 | Nagpur         | India
Shikhar     |    Dhawan |  46 | Delhi          | India

(4 rows)

DELETE FROM deyimini WHERE yan tümcesi olmadan çalıştırırsanız, belirtilen tablodaki tüm kayıtlar silinecektir.

postgres=# DELETE FROM CRICKETERS;
DELETE 4

Tüm kayıtları sildiğiniz için, CRICKETERS tablosunun içeriğini almaya çalışırsanız, SELECT deyimini kullanarak aşağıda gösterildiği gibi boş bir sonuç kümesi alırsınız -

postgres=# SELECT * FROM CRICKETERS;
 first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+---------
(0 rows)

Python Kullanarak Verileri Silme

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.

  • Özelliğ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.

  • Daha sonra DELETE deyimini bir parametre olarak execute () yöntemine ileterek yürütün.

Misal

Python kodunu takiben, EMPLOYEE tablosunun 25'den büyük yaş değerlerine sahip kayıtlarını siler -

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 contents of the table
print("Contents of the table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())

#Deleting records
cursor.execute('''DELETE FROM EMPLOYEE WHERE AGE > 25''')

#Retrieving data after delete
print("Contents of the table after delete operation ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())

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

#Closing the connection
conn.close()

Çıktı

Contents of the table:
[
   ('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)
]
Contents of the table after delete operation:
[  
   ('Tripthi', 'Mishra', 24, 'F', 6000.0), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0)
]

DROP TABLE deyimini kullanarak PostgreSQL veritabanından bir tablo bırakabilirsiniz.

Sözdizimi

PostgreSQL'de DROP TABLE deyiminin sözdizimi aşağıdadır -

DROP TABLE table_name;

Misal

Aşağıdaki sorguları kullanarak CRICKETERS ve EMPLOYEES adında iki 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=#
postgres=# CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), 
   AGE INT, SEX CHAR(1), INCOME FLOAT
);
CREATE TABLE
postgres=#

Şimdi "\ dt" komutunu kullanarak tablo listesini doğrularsanız, yukarıda oluşturulan tabloları şu şekilde görebilirsiniz -

postgres=# \dt;
            List of relations
 Schema | Name       | Type  | Owner
--------+------------+-------+----------
 public | cricketers | table | postgres
 public | employee   | table | postgres
(2 rows)
postgres=#

Aşağıdaki ifade, Employee adlı tabloyu veritabanından siler -

postgres=# DROP table employee;
DROP TABLE

Çalışan tablosunu sildiğiniz için, tabloların listesini yeniden alırsanız, içinde yalnızca bir tablo görebilirsiniz.

postgres=# \dt;
            List of relations
Schema  | Name       | Type  | Owner
--------+------------+-------+----------
public  | cricketers | table | postgres
(1 row)


postgres=#

Çalışan tablosunu tekrar silmeye çalışırsanız, zaten silmiş olduğunuz için, aşağıda gösterildiği gibi "tablo yok" diyen bir hata alırsınız -

postgres=# DROP table employee;
ERROR: table "employee" does not exist
postgres=#

Bunu çözmek için, DELTE ifadesiyle birlikte IF EXISTS yan tümcesini kullanabilirsiniz. Bu, eğer varsa tabloyu kaldırır, aksi takdirde DLETE işlemini atlar.

postgres=# DROP table IF EXISTS employee;
NOTICE: table "employee" does not exist, skipping
DROP TABLE
postgres=#

Python Kullanarak Tüm Tabloyu Kaldırma

DROP deyimini kullanarak, ihtiyacınız olduğunda bir tabloyu bırakabilirsiniz. Ancak var olan herhangi bir tabloyu silerken çok dikkatli olmalısınız çünkü kaybolan veriler bir tablo silindikten sonra kurtarılmayacaktı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()

#Doping EMPLOYEE table if already exists
cursor.execute("DROP TABLE emp")
print("Table dropped... ")

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

#Closing the connection
conn.close()

Çıktı

#Table dropped...

Bir PostgreSQL SELECT deyimini çalıştırırken, LIMIT deyimini kullanarak sonuçtaki kayıtların sayısını sınırlayabilirsiniz.

Sözdizimi

PostgreSQL'deki LMIT cümlesinin sözdizimi aşağıdadır -

SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]

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, LIMIT cümlesini kullanarak Cricketers tablosunun ilk 3 kaydını alır -

postgres=# SELECT * FROM CRICKETERS LIMIT 3;
 first_name | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+-------------
 Shikhar    | Dhawan     | 33  | Delhi          | India
 Jonathan   | Trott      | 38  | CapeTown       | SouthAfrica
 Kumara     | Sangakkara | 41  | Matale         | Srilanka

   (3 rows)

Belirli bir kayıttan (ofset) başlayan kayıtları almak istiyorsanız, bunu OFFSET yan tümcesini LIMIT ile birlikte kullanarak yapabilirsiniz.

postgres=# SELECT * FROM CRICKETERS LIMIT 3 OFFSET 2;
 first_name | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+----------
 Kumara     | Sangakkara | 41  | Matale         | Srilanka
 Virat      | Kohli      | 30  | Delhi          | India
 Rohit      | Sharma     | 32  | Nagpur         | India

   (3 rows)
postgres=#

Python Kullanarak Sınırlama Maddesi

Aşağıdaki python örneği EMPLOYEE adlı bir tablonun içeriğini alır ve sonuçtaki kayıt sayısını 2 ile sınırlar -

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 single row
sql = '''SELECT * from EMPLOYEE LIMIT 2 OFFSET 2'''

#Executing the query
cursor.execute(sql)

#Fetching the data
result = cursor.fetchall();
print(result)

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

#Closing the connection
conn.close()

Çıktı

[('Sharukh', 'Sheik', 25, 'M', 8300.0), ('Sarmista', 'Sharma', 26, 'F', 10000.0)]

Verileri iki tabloya böldüğünüzde, bu iki tablodan Birleşik kayıtları Birleştir seçeneğini kullanarak alabilirsiniz.

Misal

CRICKETERS adlı bir tablo oluşturduğumuzu ve bu tabloya aşağıda gösterildiği gibi 5 kayıt eklediğimizi varsayalım -

postgres=# CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int, 
   Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);
postgres=# insert into CRICKETERS values ('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
postgres=# insert into CRICKETERS values ('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
postgres=# insert into CRICKETERS values ('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
postgres=# insert into CRICKETERS values ('Virat', 'Kohli', 30, 'Delhi', 'India');
postgres=# insert into CRICKETERS values ('Rohit', 'Sharma', 32, 'Nagpur', 'India');

Ve eğer OdiStats adında başka bir tablo oluşturup içine 5 kayıt eklediysek -

postgres=# CREATE TABLE ODIStats (
   First_Name VARCHAR(255), Matches INT, Runs INT, AVG FLOAT, 
   Centuries INT, HalfCenturies INT
);
postgres=# insert into OdiStats values ('Shikhar', 133, 5518, 44.5, 17, 27);
postgres=# insert into OdiStats values ('Jonathan', 68, 2819, 51.25, 4, 22);
postgres=# insert into OdiStats values ('Kumara', 404, 14234, 41.99, 25, 93);
postgres=# insert into OdiStats values ('Virat', 239, 11520, 60.31, 43, 54);
postgres=# insert into OdiStats values ('Rohit', 218, 8686, 48.53, 24, 42);

Aşağıdaki ifade, bu iki tablodaki değerleri birleştiren verileri alır -

postgres=# SELECT
   Cricketers.First_Name, Cricketers.Last_Name, Cricketers.Country,
   OdiStats.matches, OdiStats.runs, OdiStats.centuries, OdiStats.halfcenturies
   from Cricketers INNER JOIN OdiStats ON Cricketers.First_Name = OdiStats.First_Name;
 first_name | last_name  | country     | matches | runs  | centuries | halfcenturies
------------+------------+-------------+---------+-------+-----------+---------------
 Shikhar    | Dhawan     | India       | 133     | 5518  | 17        | 27
 Jonathan   | Trott      | SouthAfrica | 68      | 2819  | 4         | 22
 Kumara     | Sangakkara | Srilanka    | 404     | 14234 | 25        | 93
 Virat      | Kohli      | India       | 239     | 11520 | 43        | 54
 Rohit      | Sharma     | India       | 218     | 8686  | 24        | 42
(5 rows)
   
postgres=#

Python Kullanarak Katılır

Verileri iki tabloya böldüğünüzde, bu iki tablodan Birleşik kayıtları Birleştir seçeneğini kullanarak alabilirsiniz.

Misal

Aşağıdaki python programı JOIN cümlesinin kullanımını gösterir -

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 single row
sql = '''SELECT * from EMP INNER JOIN CONTACT ON EMP.CONTACT = CONTACT.ID'''

#Executing the query
cursor.execute(sql)

#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, 101, 101, '[email protected]', 'Hyderabad'), 
   ('Vinay', 'Battacharya', 20, 'M', 6000.0, 102, 102, '[email protected]', 'Vishakhapatnam'), 
   ('Sharukh', 'Sheik', 25, 'M', 8300.0, 103, 103, '[email protected] ', 'Pune'), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0, 104, 104, '[email protected]', 'Mumbai')
]

Psycopg kütüphanesinin Cursor sınıfı, python kodunu kullanarak veritabanındaki PostgreSQL komutlarını çalıştırmak için yöntemler sağlar.

Yöntemlerini kullanarak SQL deyimlerini çalıştırabilir, sonuç kümelerinden veri alabilir, prosedürleri çağırabilirsiniz.

Yaratabilirsin Cursor Connection nesnesinin / sınıfının cursor () yöntemini kullanan nesne.

Misal

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

Yöntemler

Aşağıdakiler, Cursor sınıfı / nesnesi tarafından sağlanan çeşitli yöntemlerdir.

Sr.No. Yöntemler ve Açıklama
1

callproc()

Bu yöntem, mevcut prosedürleri PostgreSQL veritabanını çağırmak için kullanılır.

2

close()

Bu yöntem, mevcut imleç nesnesini kapatmak için kullanılır.

3

executemany()

Bu yöntem, bir dizi parametre listesini kabul eder. Bir MySQL sorgusu hazırlar ve onu tüm parametrelerle yürütür.

4

execute()

Bu yöntem, bir MySQL sorgusunu parametre olarak kabul eder ve verilen sorguyu yürütür.

5

fetchall()

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

6

fetchone()

Bu yöntem, bir sorgunun sonucundaki sonraki satırı getirir ve bir demet olarak döndürür.

7

fetchmany()

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

Özellikleri

Aşağıdakiler Cursor sınıfının özellikleridir -

Sr.No. Özellik ve Açıklama
1

description

Bu, bir sonuç kümesindeki sütunların açıklamasını içeren listeyi döndüren salt okunur bir özelliktir.

2

lastrowid

Bu salt okunur bir özelliktir, tabloda otomatik olarak artan sütunlar varsa, bu son INSERT veya UPDATE işleminde o sütun için oluşturulan değeri döndürür.

3

rowcount

Bu, SELECT ve UPDATE işlemleri durumunda döndürülen / güncellenen satır sayısını döndürür.

4

closed

Bu özellik, bir imlecin kapatılıp kapatılmadığını belirtir, eğer öyleyse doğru, yoksa yanlış döndürür.

5

connection

Bu, imlecin yaratıldığı bağlantı nesnesine bir referans döndürür.

6

name

Bu özellik, imlecin adını döndürür.

7

scrollable

Bu özellik, belirli bir imlecin kaydırılabilir olup olmadığını belirtir.