| title | PostgreSQL Python: Update Data in a Table | ||||
|---|---|---|---|---|---|
| page_title | PostgreSQL Python: Update Data in a Table | ||||
| page_description | In this tutorial, you will learn how to update data in a PostgreSQL database table in a Python program using psycopg2 package. | ||||
| prev_url | https://www.postgresqltutorial.com/postgresql-python/update/ | ||||
| ogImage | /postgresqltutorial/vendors_table.png | ||||
| updatedOn | 2026-05-07T18:15:13.000Z | ||||
| enableTableOfContents | true | ||||
| previousLink |
|
||||
| nextLink |
|
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.
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.
We will use the vendors table in the suppliers database for the demonstration:
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")First, open the Command Prompt on Windows or Terminal on Unix-like systems.
Second, execute the update.py module:
python update.pyFirst, connect to the PostgreSQL server using the psql client tool:
psql -U postgresSecond, change the current database to suppliers:
\c suppliers
Third, 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
- Use the
execute()method of acursorobject to execute anUPDATEstatement that updates data in a table
