Summary: in this tutorial, you will learn how to update data in a PostgreSQL table from a Python program.
This tutorial picks up from where the Inserting Data Into Table Tutorial left off.
Steps for updating data in a PostgreSQL table from Python
To update data from a table in Python, you follow these steps:
- First, connect to the PostgreSQL server.
- Next, create a
cursorobject from theconnectionobject. - Then, execute an UPDATE statement by calling the
execute()method of thecursorobject. - After that, commit the changes by calling the
commit()method of theconnectionobject. - Finally, optionally obtain the number of updated rows from the
rowcountproperty of thecursorobject.
Updating data in a table example
We will use the vendors table in the suppliers database for the demonstration:

1) Creating update.py module
Suppose a vendor changed its name, you need to reflect these changes in the vendors table.
To achieve this, you can define a function update_vendor(), which updates the vendor name based on the vendor id.
First, create a new module called update.py in the project directory.
Second, define update_vendor() function in the update.py module:
import psycopg2
from config import load_config
def update_vendor(vendor_id, vendor_name):
""" Update vendor name based on the vendor id """
updated_row_count = 0
sql = """ UPDATE vendors
SET vendor_name = %s
WHERE vendor_id = %s"""
config = load_config()
try:
with psycopg2.connect(**config) as conn:
with conn.cursor() as cur:
# execute the UPDATE statement
cur.execute(sql, (vendor_name, vendor_id))
updated_row_count = cur.rowcount
# commit the changes to the database
conn.commit()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
return updated_row_count
if __name__ == '__main__':
update_vendor(1, "3M Corp")2) Execute the update.py module
First, open the Command Prompt on Windows or Terminal on Unix-like systems.
Second, execute the update.py module:
python update.py3) Verify the update
First, connect to the PostgreSQL server using the psql client tool:
psql -U postgresSecond, change the current database to suppliers:
\c suppliersThird, retrieve data from the vendors table with the vendor id 1:
SELECT
*
FROM
vendors
WHERE
vendor_id = 1;Output:
vendor_id | vendor_name
-----------+-------------
1 | 3M Corp
(1 row)The name of the vendor id 1 has been changed as expected.
Download the project source code
Summary
- Use the
execute()method of acursorobject to execute anUPDATEstatement that updates data in a table