八月 14, 2023
摘要:本教程向您展示在 Python 中如何使用 psycopg 数据库适配器从 PostgreSQL 表中删除数据。
目录
Python 中删除 PostgreSQL 表数据的步骤
要在 Python 中删除 PostgreSQL 表中的数据,请使用以下步骤:
首先,通过调用 psycopg 模块的connect()
函数创建一个新的数据库连接。
conn = psycopg2.connect(dsn)
该connect()
函数会返回一个新的connection
对象。
接下来,要执行任何语句,您需要一个cursor
对象。要创建新的游标对象,请调用连接对象的cursor()
方法,如下所示:
cur = conn.cursor()
然后,执行DELETE语句。如果要将值传递给DELETE
语句,请在DELETE
语句中使用占位符 (%s
),并将输入值传递给execute()
方法的第二个参数。
带有一个用于表示字段id
值的占位符的DELETE
语句如下:
DELETE FROM table_1 WHERE id = %s;
要将值value_1
绑定到占位符,您可以调用execute()
方法,并将输入值作为元组传递给第二个参数,如下所示:
cur.execute(delete_sql, (value_1,))
之后,通过调用该connection
对象的commit()
方法,将更改永久保存到数据库中。
conn.commit()
最后,通过调用cursor
和connection
对象的close()
方法,关闭与 PostgreSQL 数据库服务器的通信。
cur.close()
conn.close()
Python 删除 PostgreSQL 表中数据的示例
为了演示,我们将使用在创建表教程中创建的suppliers
数据库中的parts
表。
以下delete_part()
函数删除part_id
指定的parts
表中的一行。
#!/usr/bin/python
import psycopg2
from config import config
def delete_part(part_id):
""" delete part by part id """
conn = None
rows_deleted = 0
try:
# read database configuration
params = config()
# connect to the PostgreSQL database
conn = psycopg2.connect(**params)
# create a new cursor
cur = conn.cursor()
# execute the UPDATE statement
cur.execute("DELETE FROM parts WHERE part_id = %s", (part_id,))
# get the number of updated rows
rows_deleted = cur.rowcount
# Commit the changes to the database
conn.commit()
# Close communication with the PostgreSQL database
cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn is not None:
conn.close()
return rows_deleted
在测试delete_part()
函数之前,我们从parts
表中查询数据结果如下:
suppliers=# SELECT * FROM parts;
part_id | part_name
---------+-------------
1 | SIM Tray
2 | Speaker
3 | Vibrator
4 | Antenna
5 | Home Button
6 | LTE Modem
(6 rows)
现在我们运行 Python 程序来删除 id 为 1 的部件。
if __name__ == '__main__':
deleted_rows = delete_part(2)
print('The number of deleted rows: ', deleted_rows)
我们再次从parts
表中查询数据以确认 Python 程序所做的删除。
suppliers=# SELECT * FROM parts;
part_id | part_name
---------+-------------
2 | Speaker
3 | Vibrator
4 | Antenna
5 | Home Button
6 | LTE Modem
(5 rows)
部件 ID 为 1 的行已按预期成功删除。
在本教程中,您学习了如何使用 Python 从 PostgreSQL 表中删除数据。