Python MySQL –更新表中的数据

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

简介:本教程将引导您完成使用MySQL Connector / Python API更新MySQL表中的数据所需的步骤。

要更新Python中MySQL表中的数据,请按照以下步骤操作:

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

  • 从MySQLConnection对象创建一个新的MySQLCursor对象,然后调用MySQLCursor对象的execute()方法。
    要接受更改,请在调用execute()方法之后调用MySQLConnection对象的commit()方法。
    否则,将不会对数据库进行任何更改。

  • 关闭游标和数据库连接。

以下示例更新由书ID指定的书的标题:

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

def update_book(book_id, title):
    # read database configuration
    db_config = read_db_config()

    # prepare query and data
    query = """ UPDATE books
                SET title = %s
                WHERE id = %s """

    data = (title, book_id)

    try:
        conn = MySQLConnection(**db_config)

        # update book title
        cursor = conn.cursor()
        cursor.execute(query, data)

        # accept the changes
        conn.commit()

    except Error as error:
        print(error)

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

if __name__ == '__main__':
    update_book(37, 'The Giant on the Hill *** TEST ***')

在此模块中,我们使用了在从Python教程连接数据库时创建的python_mysql_dbconfig模块中的read_db_config()函数。

我们在UPDATE语句中放置了两个占位符(%),一个占位符,另一个占位符。
我们将UPDATE语句(query)和(title,id)元组都传递给execute()方法。
连接器会将查询解释为以下内容:

UPDATE books
SET title = 'The Giant on the Hill *** TEST ***'
WHERE id = 37

重要的是要理解,我们应始终在包含来自用户输入的任何SQL语句中使用占位符(%s)。
这有助于我们防止SQL注入。

让我们测试一下我们的新模块,看看它是否有效。

首先,选择ID为37的书:

SELECT * FROM books
WHERE id = 37;
+----+------------------------+---------------+
| id | title                  | isbn          |
+----+------------------------+---------------+
| 37 | The Giant on the Hill  | 1235644620578 |
+----+------------------------+---------------+
1 row in set (0.00 sec)

其次,执行update.py模块。

python update.py

第三步,通过执行SELECT语句以确认更改来选择书籍:

+----+------------------------------------+---------------+
| id | title                              | isbn          |
+----+------------------------------------+---------------+
| 37 | The Giant on the Hill *** TEST *** | 1235644620578 |
+----+------------------------------------+---------------+
1 row in set (0.00 sec)

它按预期工作。

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