Python mysql update where

Python MySQL — Update Table data

In this tutorial, we will learn how to Update MySQL table data in Python where we will be using the UPDATE SQL query and the WHERE clause.

The UPDATE SQL query is used to update any record in MySQL table.

Python MySQL UPDATE : Syntax

Below we have the basic syntax of the UPDATE statement:

UPDATE table_name SET column_name = new_value WHERE condition

The above syntax is used to update any specific row in the MySQL table. And to specify which specific row of data we want to update, we use the WHERE clause to provide the condition to be matched while looking for the right row of data to update.

Python MySQL UPDATE Table Data: Example

Let us update the record in the students table (from the Python MySQL create table tutorial) by changing the name of the student whose rollno is 3. The code is given below:

import mysql.connector as mysql db = mysql.connect( host = "localhost", user = "yourusername", passwd = "yourpassword", database = "studytonight" ) cursor = db.cursor() ## defining the Query query = "UPDATE students SET name = 'Navin' WHERE rollno = 3" ## executing the query cursor.execute(query) ## final step is to commit to indicate the database ## that we have changed the table data db.commit()

To check if the data is updated successfully we can retrieve the students table data using the given below code:

import mysql.connector as mysql db = mysql.connect( host = "localhost", user = "yourusername", passwd = "yourpassword", database = "studytonight" ) cursor = db.cursor() ## defining the Query query = "SELECT * FROM students" ## getting records from the table cursor.execute(query) ## fetching all records from the 'cursor' object records = cursor.fetchall() ## Showing the data for record in records: print(record)

The output of the above code is:

(‘Ramesh’, ‘CSE’, ‘149 Indirapuram’, 1) (‘Peter’, ‘ME’, ‘Noida’, 2) (‘Navin’, ‘CE’, ‘New Delhi’, 3)

Here is the snapshot of the actual output:

Python MySQL update table data

In the SELECT query too, we can use the WHERE clause to retrieve only the data of the row with rollno 3 or any other condition.

Источник

Python Update MySQL Table

This article demonstrates how to execute a MySQL UPDATE query from Python to modify the MySQL table’s data.

Читайте также:  Загрузить javascript и cookies

Goals of this lesson. You’ll learn the following MySQL UPDATE operations from Python using a ‘MySQL Connector’ module.

  • Update single and multiple rows, single and multiple columns
  • Use a Python variable in a parameterized query to update table rows.
  • Also, Update a column with date-time and timestamp values
  • The role of commit and rollback in the update operation.

Further Reading:

Table of contents

Prerequisite

Before executing the following program, make sure you have the following in place −

  • Username and password that you need to connect MySQL
  • MySQL database table name which you want to update.

For this article, I am using a Laptop table present in my MySQL server.

If a table is not present in your MySQL server, you can refer to our article to create a MySQL table from Python.

You can also download a SQL query file, which contains SQL queries for table creation and data so that you can use this table for your UPDATE operations.

MySQL Laptop table with data

Example to Update a row of MySQL Table

To perform a SQL UPDATE query from Python, you need to follow the following steps: –

How to Update MySQL Table in Python

  1. Connect to MySQL from Python Refer to Python MySQL database connection to connect to MySQL database from Python using MySQL Connector module
  2. Prepare a SQL Update Query Prepare an update statement query with data to update. FOr example, UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
  3. Execute the UPDATE query, using cursor.execute() Execute the UPDATE query using cursor.execute() method. This method execute the operation stored in the UPDATE query.
  4. Commit your changes Make modification persistent into a database using the commit() of a connection class.
  5. Extract the number of rows affected After a successful update operation, use a cursor.rowcount method to get the number of rows affected. The count depends on how many rows you are updating.
  6. Verify result using the SQL SELECT query Execute a MySQL select query from Python to see the new changes
  7. Close the cursor object and database connection object use cursor.clsoe() and connection.clsoe() method to close open connections after your work completes.

Python update MySQL table's data

Let’s see the program now. In this program, we are updating a Laptop table by changing the price column of the first row.

import mysql.connector try: connection = mysql.connector.connect(host='localhost', database='electronics', user='pynative', password='pynative@#29') cursor = connection.cursor() print("Before updating a record ") sql_select_query = """select * from Laptop where cursor.execute(sql_select_query) record = cursor.fetchone() print(record) # Update single record now sql_update_query = """Update Laptop set Price = 7000 where cursor.execute(sql_update_query) connection.commit() print("Record Updated successfully ") print("After updating record ") cursor.execute(sql_select_query) record = cursor.fetchone() print(record) except mysql.connector.Error as error: print("Failed to update table record: <>".format(error)) finally: if connection.is_connected(): connection.close() print("MySQL connection is closed") 
Before updating a row (1, 'Lenovo ThinkPad P71', 6459.0, datetime.date(2019, 8, 14)) Record Updated successfully After updating row (1, 'Lenovo ThinkPad P71', 7000.0, datetime.date(2019, 8, 14)) MySQL connection is closed

MySQL Laptop table after updating record

  • Don’t forget to close the cursor and database connection objects and Catch any SQL exceptions that may occur during this process
  • We also used commit() and rollback() method. commit() to make changes persistent in the database and rollback() revert the changes if any database error occurred.
Читайте также:  Html document create element

Use a Python variable in MySQL Update query

Sometimes we need input from the user, such as when users update their password or any other details through User Interface. Or when you want to update details dynamically by passing Python variables into a query. Such as setting column value using the variable.

It is always best practice to use parameterized query and prepared statement, i.e., placeholders ( %s ) inside any SQL statements that contain input from users. This helps us prevent SQL injection and other SQL issues.
Read more on What is a Parameterized Query and its performance benefits.

Let’ s see the example program now.

import mysql.connector def update_laptop_price(id, price): try: connection = mysql.connector.connect(host='localhost', database='electronics', user='roo', password='pynative@#29') cursor = connection.cursor() sql_update_query = """Update laptop set price = %s where input_data = (price, id) cursor.execute(sql_update_query, input_data) connection.commit() print("Record Updated successfully ") except mysql.connector.Error as error: print("Failed to update record to database: <>".format(error)) finally: if connection.is_connected(): cursor.close() connection.close() print("MySQL connection is closed") update_laptop_price(7500, 1) update_laptop_price(5000, 2)
Record Updated successfully MySQL connection is closed Record Updated successfully MySQL connection is closed

Let’s understand the above program: –

  • We used the prepared statement to accept user input using a placeholder, i.e., we put two placeholders in the update query, one for the “Price” column and the other is for the” id” column.
  • Next, we added those two columns value in the tuple format in sequential order and passed SQL update query and input tuple to the cursor.execute() method. Remember tuple contains user data in the sequential order of placeholders.
  • In the end, we are committing our changes to the database using the connection.commit() .

Update Multiple Rows of MySQL Table using Python

It is possible to update multiple rows in a single SQL Query. You can also call it a bulk update. Use the cursor.executemany() method of cursor object to update multiple rows of a table.

The syntax of the executemany() method

cursor.executemany(operation, seq_of_params)

This method executes operation against all parameter sequences in the sequence seq_of_params argument.

import mysql.connector try: connection = mysql.connector.connect(host='localhost', database='electronics', user='pynative', password='pynative@#29') cursor = connection.cursor() sql_update_query = """Update Laptop set Price = %s where # multiple records to be updated in tuple format records_to_update = [(3000, 3), (2750, 4)] cursor.executemany(sql_update_query, records_to_update) connection.commit() print(cursor.rowcount, "Records of a laptop table updated successfully") except mysql.connector.Error as error: print("Failed to update records to database: <>".format(error)) finally: if connection.is_connected(): connection.close() print("MySQL connection is closed") 
2 Records of a laptop table updated successfully connection is closed

Let’s understand the above program

  • We defined a SQL update query with two placeholders (“Price” and “Id” column ). and prepared a list of records to be updated. This List contains a tuple for each row. Here we created two tuples, so we are updated two rows.
  • We used the cursor.executemany() method to update multiple rows of a database table.
  • Using the cursor.rowcount we can find how many rows are updated successfully.
Читайте также:  Основы xhtml и css

Python update multiple Columns of MySQL table

We can also update multiple columns of the MySQL table in a single query. Use parameterized query using a placeholder to update multiple columns. Let see this with an example program.

import mysql.connector try: connection = mysql.connector.connect(host='localhost', database='electronics', user='pynative', password='pynative@#29') cursor = connection.cursor() sql_update_query = """Update Laptop set Name = %s, Price = %s where name = "HP Pavilion" price = 2200 input = (name, price, id) cursor.execute(sql_update_query, input) connection.commit() print("Multiple columns updated successfully ") except mysql.connector.Error as error: print("Failed to update columns of table: <>".format(error)) finally: if connection.is_connected(): connection.close() print("MySQL connection is closed") 
Multiple column updated successfully MySQL connection is closed

Update Datetime and timestamp column of a MySQL table from Python

Suppose you have a date column in a MySQL table and you want to update a datetime.datetime() object into this column. Let’s see how to prepare an update query to update the datetime column of a table

from datetime import datetime import mysql.connector try: connection = mysql.connector.connect(host='localhost', database='electronics', user='pynative', password='pynative@#29') cursor = connection.cursor() sql_update_query = """Update Laptop set Purchase_date = %s where current_Date = datetime.now() formatted_date = current_Date.strftime('%Y-%m-%d %H:%M:%S') input = (formatted_date, id) cursor.execute(sql_update_query, input) connection.commit() print("Purchased Date Updated successfully ") except mysql.connector.Error as error: print("Failed to update purchased date <>".format(error)) finally: if connection.is_connected(): connection.close() print("connection is closed") 

You should get the following output after the execution of the above code.

Purchased Date Updated successfully connection is closed

Next Steps

To practice what you learned in this lesson, Please solve a Python Database Exercise project to practice and master the Python Database operations.

Did you find this page helpful? Let others know about it. Sharing helps me continue to create free Python resources.

About Vishal

I’m Vishal Hule, Founder of PYnative.com. I am a Python developer, and I love to write articles to help students, developers, and learners. Follow me on Twitter

Python Exercises and Quizzes

Free coding exercises and quizzes cover Python basics, data structure, data analytics, and more.

  • 15+ Topic-specific Exercises and Quizzes
  • Each Exercise contains 10 questions
  • Each Quiz contains 12-15 MCQ

Источник

Оцените статью