Summary: in this tutorial, you will learn how to use the Python cx_Oracle API to delete data from a table.
To delete data from a table, you use the following steps:
- First, connect to the Oracle Database by creating a new
Connection
object. - Second, create a new
Cursor
object from theConnection
object by calling theConnection.Cursor()
method. - Third, execute a
DELETE
statement by calling theCursor.execute()
method. - Fourth, call the
Connection.commit()
method to apply the changes to the database. If you forget to call theConnection.commit()
method, you will see that the change will not take effect. - Finally, release the
Cursor
andConnection
objects by calling theCursor.close()
andConnection.close()
method respectively. You can also use thewith
block to release these objects automatically.
The following code illustrates how to delete a row from the billing_headers
table based on a specific billing number.
import cx_Oracle
import config as cfg
def delete_billing(billing_no, amount):
"""
Delete a billing based on a billing no.
:param billing_no:
:return:
"""
sql = ('delete from billing_headers '
'where billing_no = :billing_no')
try:
# establish a new connection
with cx_Oracle.connect(cfg.username,
cfg.password,
cfg.dsn,
encoding=cfg.encoding) as connection:
# create a cursor
with connection.cursor() as cursor:
# execute the insert statement
cursor.execute(sql, [amount, billing_no])
# commit the change
connection.commit()
except cx_Oracle.Error as error:
print(error)
if __name__ == '__main__':
delete_billing(1)
Code language: Python (python)
Here are the contents of the billing_headers
table after executing the program:
SELECT * FROM billing_headers;
Code language: Python (python)
As you can see clearly from the output, the row whose billing_no
is 1 has been removed. It means that the program works as expected.
If you have not followed the previous tutorials, you can use the config.py
module:
username = 'OT'
password = '<password>'
dsn = 'localhost/pdborcl'
port = 1512
encoding = 'UTF-8'
Code language: SQL (Structured Query Language) (sql)
The following script is to create the billing_headers
table:
CREATE TABLE billing_headers(
billing_no NUMBER GENERATED BY DEFAULT AS IDENTITY,
billing_date DATE NOT NULL,
amount NUMBER(19,4) DEFAULT 0 NOT NULL,
customer_id NUMBER NOT NULL,
note VARCHAR2(100),
PRIMARY KEY(billing_no)
);
Code language: SQL (Structured Query Language) (sql)
In this tutorial, you have learned how to use the Python cx_Oracle API to delete data in a table.