Open In App

How to Retrieve Blob Datatype from Postgres with Python

Last Updated : 21 Nov, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, We will learn How to retrieve BLOB from a PostgreSQL database.

  • BLOB is a Binary large object (BLOB) is a data type that can store any binary data.
  • To Retrieve Blob Datatype from Postgres with Python we will use psycopg2.

Stepwise Implementation:

  • Connect to the PostgreSQL server.
  • Create a cursor with the help of cursor() method in Python. 
  • Execute the Retrieve Query using the execute() method with BLOB VALUES. 
  • And then Close the Cursor and commit the changes.

The below code is an example to Retrieve BLOB data in a PostgreSQL database.

Python3




import psycopg2
from config import config
  
# connect to the PostgreSQL server
# & creating a cursor object
conn = psycopg2.connect(**config)
cur = conn.cursor()
  
# Retrieve BLOB data from the database.
cur.execute('SELECT * FROM BLOB_DataStore')
db = cur.fetchall()
  
BLOB = db[0][2]
open("FromDB"+db[0][1], 'wb').write(BLOB)
  
cur.close()
conn.commit()


Complete Function to Retrieve the BLOB data into the database

The code to Retrieve BLOB data in a PostgreSQL database with the Table name blob_datastore.

Retrieve Blob Datatype from Postgres

Python3




# Complete Function to Retrieve
# the BLOB data into the database.
import psycopg2
from config import config
  
# This Function will Creates File from binary data.
def Binary_To_File(BLOB, FileName, oldFileName):
    with open(f"{FileName}", 'wb') as file:
        file.write(BLOB)
    print(f"{oldFileName} File saved With Name name {FileName}")
  
  
def retrieve_BLOB(S_No, newFileName):
    """ Retrieve a BLOB From a table """
    conn = None
    try:
        # connect to the PostgreSQL server
        # & creating a cursor object
        conn = psycopg2.connect(**config)
  
        # Creating a cursor with name cur.
        cur = conn.cursor()
  
        # Retrieve BLOB data from the database.
        cur.execute('SELECT * FROM BLOB_DataStore')
        db = cur.fetchall()
  
        BLOB = db[S_No-1][2]
          
        # open("FromDB"+db[0][1], 'wb').write(BLOB)
        Binary_To_File(BLOB, newFileName, db[S_No-1][1])
  
        # Close the connection
        cur.close()
  
    except(Exception, psycopg2.DatabaseError) as error:
        print(error)
    finally:
        if conn is not None:
            
            # Commit the changes to the database
            conn.commit()
  
  
retrieve_BLOB(1, 'OctaFromDB.jpg')


Output:

Retrieve Blob Datatype from Postgres

Retrieving Different Types of Files(BLOB Datatype)

The code to Retrieve BLOB data from PostgreSQL database With the Table name blob_datastore. The type of data that we will Retrieve:

  • MP4
  • PDF
  • DOCS
  • Image
  • Video
  • gif
  • HTML
  • MP3

Retrieve Blob Datatype from Postgres

Example:

Python3




import psycopg2
from config import config
  
conn = None
try:
    # connect to the PostgreSQL server
    conn = psycopg2.connect(**config)
  
    # Creating a cursor with name cur.
    cur = conn.cursor()
  
    # SQL query to fetch data from the database.
    cur.execute('SELECT * FROM BLOB_DataStore')
  
    # open(file,'wb').write() is used to
    # write the binary data to the file.
    for row in cur.fetchall():
        BLOB = row[2]
        open("new"+row[1], 'wb').write(BLOB)
        print(row[0], row[1], "BLOB Data is saved\
        in Current Directory")
  
    # Close the connection
    cur.close()
  
except(Exception, psycopg2.DatabaseError) as error:
    print(error)
finally:
    if conn is not None:
        
        # Commit the changes to the database
        conn.commit()


Output:

Retrieve Blob Datatype from Postgres



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads