Python MySQL –从表中删除数据

时间:2019-11-20 08:52:39  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用Python从MySQL数据库的表中删除数据。

要从Python程序中的表中删除数据,请执行以下步骤:

  • 通过创建一个新的MySQLConnection对象连接到数据库。

  • 实例化一个新的光标对象,并调用其execute()方法。
    要提交更改,应始终在调用execute()方法之后调用MySQLConnection对象的commit()方法。

  • 通过调用相应对象的close()方法来关闭游标和数据库连接。

以下示例显示了如何删除书ID指定的书:

from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config

def delete_book(book_id):
    db_config = read_db_config()

    query = "DELETE FROM books WHERE id = %s"

    try:
        # connect to the database server
        conn = MySQLConnection(**db_config)

        # execute the query
        cursor = conn.cursor()
        cursor.execute(query, (book_id,))

        # accept the change
        conn.commit()

    except Error as error:
        print(error)

    finally:
        cursor.close()
        conn.close()

if __name__ == '__main__':
    delete_book(102)

请注意,我们使用python_mysql_dbconfig模块中的read_db_config()函数。

因为我们需要删除books表中的特定行,所以我们在DELETE语句中使用一个占位符(%)。

当我们调用execute()方法时,我们同时传递了DELETE语句和(book_id,)元组。
连接器会将DELETE语句转换为以下形式:

DELETE FROM books 
WHERE id = 102;

您应始终在传递给execute()方法的任何查询中使用占位符。
这可以帮助您避免SQL注入。

在运行代码之前,让我们在删除条目之前检查books表以查看数据。

SELECT * FROM books
WHERE id = 102;

运行上面的模块后,我们再次执行SELECT语句。
没有返回任何行。
这表示模块已成功删除条目。

在本教程中,您学习了如何使用MySQL Connector / Python API从表中删除数据。