Python mysql connector executemany

Python MySQL Insert Into Table

To fill a table in MySQL, use the «INSERT INTO» statement.

Example

Insert a record in the «customers» table:

mydb = mysql.connector.connect(
host=»localhost»,
user=»yourusername«,
password=»yourpassword«,
database=»mydatabase»
)

sql = «INSERT INTO customers (name, address) VALUES (%s, %s)»
val = («John», «Highway 21»)
mycursor.execute(sql, val)

mydb.commit()

print(mycursor.rowcount, «record inserted.»)

Important!: Notice the statement: mydb.commit() . It is required to make the changes, otherwise no changes are made to the table.

Insert Multiple Rows

To insert multiple rows into a table, use the executemany() method.

The second parameter of the executemany() method is a list of tuples, containing the data you want to insert:

Example

Fill the «customers» table with data:

mydb = mysql.connector.connect(
host=»localhost»,
user=»yourusername«,
password=»yourpassword«,
database=»mydatabase»
)

sql = «INSERT INTO customers (name, address) VALUES (%s, %s)»
val = [
(‘Peter’, ‘Lowstreet 4’),
(‘Amy’, ‘Apple st 652’),
(‘Hannah’, ‘Mountain 21’),
(‘Michael’, ‘Valley 345’),
(‘Sandy’, ‘Ocean blvd 2’),
(‘Betty’, ‘Green Grass 1’),
(‘Richard’, ‘Sky st 331’),
(‘Susan’, ‘One way 98’),
(‘Vicky’, ‘Yellow Garden 2’),
(‘Ben’, ‘Park Lane 38’),
(‘William’, ‘Central st 954’),
(‘Chuck’, ‘Main Road 989’),
(‘Viola’, ‘Sideway 1633’)
]

print(mycursor.rowcount, «was inserted.»)

Get Inserted ID

You can get the id of the row you just inserted by asking the cursor object.

Note: If you insert more than one row, the id of the last inserted row is returned.

Example

Insert one row, and return the ID:

mydb = mysql.connector.connect(
host=»localhost»,
user=»yourusername«,
password=»yourpassword«,
database=»mydatabase»
)

sql = «INSERT INTO customers (name, address) VALUES (%s, %s)»
val = («Michelle», «Blue Village»)
mycursor.execute(sql, val)

print(«1 record inserted, ID:», mycursor.lastrowid)

Источник

Python Insert Into MySQL Table

This article demonstrates how to execute INSERT Query from Python to add a new row into the MySQL table.

In this lesson, you’ll learn the following Python MySQL insert operations using a ‘MySQL Connector’ module.

  • Insert single and multiple rows into the database table.
  • Use a parameterized query to insert a Python variable value (Integer, string, float, double, and DateTime) into a database table.
Читайте также:  Иван Фубаров

Further Reading:

Table of contents

Prerequisite

Before moving further, Please make sure you have the following in place: –

  • Username and password to connect MySQL
  • MySQL table name in which you want to insert data.

I have created a table ‘Laptop’ in the MySQL server to insert records in it. See its column structure in the image.

Empty MySQL Laptop table

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 INSERT operations.

Insert a Single Row into MySQL table from Python

How to Insert Into MySQL table from 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. Define a SQL Insert query Next, prepare a SQL INSERT query to insert a row into a table. in the insert query, we mention column names and their values to insert in a table.
    For example, INSERT INTO mysql_table (column1, column2, …) VALUES (value1, value2, …);
  3. Get Cursor Object from Connection Next, use a connection.cursor() method to create a cursor object. This method creates a new MySQLCursor object.
  4. Execute the insert query using execute() method Execute the insert query using the cursor.execute() method. This method executes the operation stored in the Insert query.
  5. Commit your changes After the successful execution of a query make changes persistent into a database using the commit() of a connection class.
  6. Get the number of rows affected After a successful insert operation, use a cursor.rowcount method to get the number of rows affected. The count depends on how many rows you are Inserting.
  7. Verify result using the SQL SELECT queryExecute a MySQL select query from Python to see the new changes.
  8. Close the cursor object and database connection object use cursor.clsoe() and connection.clsoe() method to close open connections after your work completes.

Python insert into MySQL table

Let’ s see the program now

import mysql.connector try: connection = mysql.connector.connect(host='localhost', database='electronics', user='pynative', password='pynative@#29') mySql_insert_query = """INSERT INTO Laptop (Id, Name, Price, Purchase_date) VALUES (15, 'Lenovo ThinkPad P71', 6459, '2019-08-14') """ cursor = connection.cursor() cursor.execute(mySql_insert_query) connection.commit() print(cursor.rowcount, "Record inserted successfully into Laptop table") cursor.close() except mysql.connector.Error as error: print("Failed to insert record into Laptop table <>".format(error)) finally: if connection.is_connected(): connection.close() print("MySQL connection is closed") 
Record inserted successfully into Laptop table MySQL connection is closed

MySQL table after inserting the first row from Python

Use Python Variables in a MySQL Insert Query

Sometimes you need to insert a Python variable value into a table’s column. For example, in the user signup form user enter his/her details. You can take those values in Python variables and insert them into a table.

  • We can insert Python variables into the table using the prepared statement and parameterized query.
  • Using a parameterized query, we can pass Python variables as a query parameter in which placeholders (%s) used for parameters.
import mysql.connector def insert_varibles_into_table(id, name, price, purchase_date): try: connection = mysql.connector.connect(host='localhost', database='Electronics', user='pynative', password='pynative@#29') cursor = connection.cursor() mySql_insert_query = """INSERT INTO Laptop (Id, Name, Price, Purchase_date) VALUES (%s, %s, %s, %s) """ record = (id, name, price, purchase_date) cursor.execute(mySql_insert_query, record) connection.commit() print("Record inserted successfully into Laptop table") except mysql.connector.Error as error: print("Failed to insert into MySQL table <>".format(error)) finally: if connection.is_connected(): cursor.close() connection.close() print("MySQL connection is closed") insert_varibles_into_table(2, 'Area 51M', 6999, '2019-04-14') insert_varibles_into_table(3, 'MacBook Pro', 2499, '2019-06-20')
Record inserted successfully into Laptop table MySQL connection is closed Record inserted successfully into Laptop table MySQL connection is closed

MySQL Laptop table after inserting Python variables

Refer to fetch rows from MySQL table in Python to check the data you inserted.

Читайте также:  What is variable variables in php

Insert multiple rows into MySQL table using the cursor’s executemany()

In the previous example, we have used execute() method of cursor object to insert a single record.

What if you want to insert multiple rows into a table in a single insert query from the Python application. Use the cursor’s executemany() function to insert multiple records into a table.

Syntax of the executemany() method.

cursor.executemany(operation, seq_of_params)

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

You need to include lists of tuples in the seq_of_params argument along with the insert query.

Each tuple inside the list contains a single row that you want to insert. So you can add as many rows in the list and pass a list to a cursor.executemany() function along with the insert query.

Note: Each tuple is enclosed within parentheses and separated by commas. For example, to insert multiple rows in a laptop table, we can use the following SQL Query:

INSERT INTO Laptop (Id, Name, Price, Purchase_date) VALUES (%s, %s, %s, %s)

And in seq_of_params we are passing the below List.

records_to_insert = [(4, 'HP Pavilion Power', 1999, '2019-01-11'), (5, 'MSI WS75 9TL-496', 5799, '2019-02-27'), (6, 'Microsoft Surface', 2330, '2019-07-23')]

Example to INSERT multiple rows into a MySQL table

import mysql.connector try: connection = mysql.connector.connect(host='localhost', database='Electronics', user='pynative', password='pynative@#29') mySql_insert_query = """INSERT INTO Laptop (Id, Name, Price, Purchase_date) VALUES (%s, %s, %s, %s) """ records_to_insert = [(4, 'HP Pavilion Power', 1999, '2019-01-11'), (5, 'MSI WS75 9TL-496', 5799, '2019-02-27'), (6, 'Microsoft Surface', 2330, '2019-07-23')] cursor = connection.cursor() cursor.executemany(mySql_insert_query, records_to_insert) connection.commit() print(cursor.rowcount, "Record inserted successfully into Laptop table") except mysql.connector.Error as error: print("Failed to insert record into MySQL table <>".format(error)) finally: if connection.is_connected(): cursor.close() connection.close() print("MySQL connection is closed") 
3 Record inserted successfully into Laptop table MySQL connection is closed

MySQL Laptop table after inserting multiple rows

Refer to fetch data from the MySQL table to verify your result.

  • Using cursor.executemany(sql_insert_query, records_to_insert) we are inserting multiple rows (from a List) into the table.
  • Using the cursor.rowcount we can find the number of records inserted.
Читайте также:  Пример красивых таблиц html css

Insert timestamp and DateTime into a MySQL table using Python

For example, you have a date column in a MySQL table. Let’s see how to prepare an insert query to add DateTime into a table from Python

from datetime import datetime import mysql.connector try: connection = mysql.connector.connect(host='localhost', database='Electronics', user='pynative', password='pynative@#29') mySql_insert_query = """INSERT INTO Laptop (Id, Name, Price, Purchase_date) VALUES (%s, %s, %s, %s) """ cursor = connection.cursor() current_Date = datetime.now() # convert date in the format you want formatted_date = current_Date.strftime('%Y-%m-%d %H:%M:%S') insert_tuple = (7, 'Acer Predator Triton', 2435, current_Date) result = cursor.execute(mySql_insert_query, insert_tuple) connection.commit() print("Date Record inserted successfully") except mysql.connector.Error as error: connection.rollback() print("Failed to insert into MySQL table <>".format(error)) finally: if connection.is_connected(): cursor.close() connection.close() print("MySQL connection is closed") 

You can get output like this after the execution of the above code.

Date Record inserted successfully MySQL connection is closed

Next Steps:

To practice what you learned in this article, 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

Источник

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