Open In App

Perform PostgreSQL CRUD operations from Python

The DDL is comprised of the Create, Read, Update, Delete (CRUD) operations which form the backbone of any SQL database system. Let us discuss how to perform CRUD operations on a PostgreSQL database using python.  Pyscopg2 is the most preferred mode and is widely used to connect the PostgreSQL database using python. Pyscopg2 is a Database API which is a PostgreSQL compatible driver that manages connection pools. 

In this article, we will learn how to connect to the PostgreSQL database using SQLAlchemy in python and also understood the procedure on how to perform CRUD operations against the PostgreSQL database.



Establishing a connection with the PostgreSQL database

As the first steps establish a connection with your existing database, using the connect() function of Psycopg2.




from psycopg2 import connect
 
# declare the connection string specifying
# the host name database name
# use name and password
conn_string = "host='host_name' \
dbname='database_name' user='user_name'\
password='your_password'"
 
# use connect function to establish the connection
conn = connect(conn_string)

Explanation:



host – name of the host in which the database is hosted

Username – Name of the admin

Password – Password of the admin

dbname– database name

Performing Create operation in PostgreSQL database using Python




import psycopg2
 
# Establishing the connection
conn = psycopg2.connect(
    database="databasename",
    user='username',
    password='password',
    host='hostname',
    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 publisher")
 
# Creating table as per requirement
sql = '''CREATE TABLE PUBLISHER(
                publisher_id SERIAL PRIMARY KEY,
                publisher_name VARCHAR(255) NOT NULL,
                publisher_estd INT,
                publsiher_location VARCHAR(255),
                publsiher_type VARCHAR(255)
)'''
cursor.execute(sql)
print("Table created successfully........")
conn.commit()
 
# Closing the connection
conn.close()

Output:

Table created successfully........

Creating a table in PostgreSQL using Python

Performing Insert operation in PostgreSQL database using Python




import psycopg2
 
 
try:
    connection = psycopg2.connect(user="username",
                                  password="password",
                                  host="127.0.0.1",
                                  port="5432",
                                  database="databasename")
    cursor = connection.cursor()
 
    postgres_insert_query = """ INSERT INTO publisher(publisher_id,
    publisher_name, publisher_estd, publsiher_location, publsiher_type)
    VALUES (%s,%s,%s,%s,%s)"""
    record_to_insert = [(1, 'Packt', 1950,
                         'chennai', 'books'),
                        (2, 'Springer', 1950,
                         'chennai', 'books'),
                        (3, 'Springer', 1950,
                         'chennai', 'articles'),
                        (4, 'Oxford', 1950,
                         'chennai', 'all'),
                        (5, 'MIT', 1950,
                         'chennai', 'books')]
    for i in record_to_insert:
        cursor.execute(postgres_insert_query, i)
 
        connection.commit()
        count = cursor.rowcount
    print(count, "Record inserted successfully \
    into publisher table")
 
except (Exception, psycopg2.Error) as error:
    print("Failed to insert record into publisher table", error)
 
finally:
    # closing database connection.
    if connection:
        cursor.close()
        connection.close()
        print("PostgreSQL connection is closed")

Output:

1 Record inserted successfully into publisher table

PostgreSQL connection is closed

Inserting records in a table in PostgreSQL using Python

Performing Read operation in PostgreSQL database using Python




import psycopg2
 
try:
    connection = psycopg2.connect(user="username",
                                  password="password",
                                  host="hostname",
                                  port="5432",
                                  database="databasename")
    cursor = connection.cursor()
    postgreSQL_select_Query = "select * from publisher"
 
    cursor.execute(postgreSQL_select_Query)
    print("Selecting rows from publisher table using cursor.fetchall")
    publisher_records = cursor.fetchall()
 
    print("Print each row and it's columns values")
    for row in publisher_records:
        print("publisher_Id = ", row[0], )
        print("publisher_name = ", row[1])
        print("publisher_estd  = ", row[2])
        print("publisher_location  = ", row[3])
        print("publisher_type  = ", row[4], "\n")
except (Exception, psycopg2.Error) as error:
    print("Error while fetching data from PostgreSQL", error)
 
finally:
    # closing database connection.
    if connection:
        cursor.close()
        connection.close()
        print("PostgreSQL connection is closed")

Output:

Reading records in a table in PostgreSQL using Python

Performing Update operation in PostgreSQL database using Python

The syntax for updating a table is similar to that of the syntax used in conventionally SQL statements. Here we write an update query that updates publisher name by publisher id as shown.

Test the update_publisher() function by calling the function and checking for the updates.




import psycopg2
 
 
def updateTable(publisherId, establishedYear):
    try:
        connection = psycopg2.connect(user="username",
                                      password="password",
                                      host="hostname",
                                      port="5432",
                                      database="databasename")
 
        cursor = connection.cursor()
        # Update single record now
        sql_update_query = """Update publisher set \
        publisher_estd = %s where publisher_id = %s"""
        cursor.execute(sql_update_query,
                       (establishedYear,
                        publisherId))
        connection.commit()
        count = cursor.rowcount
        print(count, "Record Updated successfully ")
 
    except (Exception, psycopg2.Error) as error:
        print("Error in update operation", error)
 
    finally:
        # closing database connection.
        if connection:
            cursor.close()
            connection.close()
            print("PostgreSQL connection is closed")
 
 
# call the update function
publisherId = 3
establishedYear = 2000
updateTable(publisherId, establishedYear)

Output:

1 Record Updated successfully 
PostgreSQL connection is closed

Here, row corresponding to id = 3 is updated with a new value for publsher_estd.

Updating records in a table in PostgreSQL using Python

Performing Delete operation in PostgreSQL database using Python

The syntax for deleting a table is similar to that of the syntax used in conventionally SQL statements. Here we will write a delete query that deletes the record by publisher id as shown.

Test the delete_publisher() function by calling the function and check for the updates.




import psycopg2
 
def deleteData(publisherId):
    try:
        connection = psycopg2.connect(user="username",
                                      password="password",
                                      host="hostname",
                                      port="5432",
                                      database="databasename")
        cursor = connection.cursor()
 
        # Update single record now
        sql_delete_query = """Delete from publisher\
        where publisher_id = %s"""
        cursor.execute(sql_delete_query, (publisherId,))
        connection.commit()
        count = cursor.rowcount
        print(count, "Record deleted successfully ")
 
    except (Exception, psycopg2.Error) as error:
        print("Error in Delete operation", error)
 
    finally:
        # closing database connection.
        if connection:
            cursor.close()
            connection.close()
            print("PostgreSQL connection is closed")
 
 
publisherId = 4
deleteData(publisherId)

Output:

1 Record deleted successfully 
PostgreSQL connection is closed

Here, the row with id = 4 has been deleted

Deleting records in a table in PostgreSQL using Python


Article Tags :