Используя данные iris, мы узнаем, как импортировать файл CSV в базу данных MySQL с помощью Python.
Предпосылки
Python 3.8.3, MySQL Workbench 8.0.22, mysql-connector-python
Для выполнения этой задачи вам потребуется:
- Подготовьте или идентифицируйте ваши данные
- Подключитесь к MySQL и создайте базу данных
- Создайте таблицу и импортируйте данные CSV в базу данных MySQL.
Шаг 1. Подготовьте или определите свои данные
Для начала подготовьте или определите CSV-файл, который вы хотите импортировать в базу данных MySQL. Например, я загрузил данные iris с GitHub.
import pandas as pd irisData = pd.read_csv(‘https://github.com/Muhd-Shahid/Write-Raw-File-into-Database-Server/raw/main/iris.csv',index_col=False) irisData.head()
Где data - разделитель запятой. Каждая строка файла CSV заканчивается символом новой строки.
Шаг 2. Подключитесь к MySQL и создайте базу данных
Теперь давайте создадим объект подключения для подключения к серверу MySQL. Конструктор connect()
создает соединение с сервером MySQL и возвращает объект MySQLConnection
.
import mysql.connector as msql from mysql.connector import Error try: conn = msql.connect(host='localhost', user='root', password='sql@123') if conn.is_connected(): cursor = conn.cursor() cursor.execute("CREATE DATABASE irisDB") print("irisDB database is created") except Error as e: print("Error while connecting to MySQL", e)
Шаг 3. Создайте таблицу и импортируйте данные CSV в таблицу MySQL
3.1. Вставка фреймов данных Pandas в базы данных с помощью INSERT
Во-первых, мы гарантируем, что параметры столбца и типа данных в таблице SQL, которую мы создадим, должны соответствовать количеству столбцов и типам данных файла CSV.
Мы создадим таблицу iris в базе данных irisDB и вставим записи на сервер MySQL.
try: conn = msql.connect(host='localhost', database='irisDB', user='root', password='sql@123') if conn.is_connected(): cursor = conn.cursor() cursor.execute("select database();") record = cursor.fetchone() print("You're connected to database: ", record) cursor.execute('DROP TABLE IF EXISTS iris;') print('Creating table....') cursor.execute("CREATE TABLE iris (sepal_length FLOAT(2,1) NOT NULL, sepal_width FLOAT(2,1) NOT NULL, petal_length FLOAT(2,1) NOT NULL, petal_width FLOAT(2,1),species CHAR(11)NOT NULL)") print("iris table is created....") for i,row in irisData.iterrows(): sql = "INSERT INTO irisdb.iris VALUES (%s,%s,%s,%s,%s)" cursor.execute(sql, tuple(row)) print("Record inserted") # the connection is not autocommitted by default, so we must commit to save our changes conn.commit() except Error as e: print("Error while connecting to MySQL", e)
3.1.1. Запросите базу данных, чтобы проверить нашу работу
Давайте запросим базу данных, чтобы убедиться, что вставленные нами данные были сохранены правильно.
# Execute query
sql = "SELECT * FROM iris"
cursor.execute(sql)
# Fetch all the records
result = cursor.fetchall()
for i in result:
print(i)
3.2. Вставка фреймов данных Pandas в базу данных с помощью функции to_sql ()
# import the module from sqlalchemy import create_engine # create sqlalchemy engine engine = create_engine("mysql+pymysql://{user}:{pw}@localhost/{db}" .format(user="root", pw="sql@123", db="irisdb")) # Insert whole DataFrame into MySQL irisData.to_sql('iris', con = engine, if_exists = 'append', chunksize = 1000,index=False)
Что тут происходит?
iris
- это имя таблицы, в которую мы хотим вставить наш DataFrame.con = engine
предоставляет сведения о соединении (напомним, что мы создалиengine
, используя наши данные аутентификации на предыдущем шаге).if_exists = 'append'
проверяет, существует ли указанная нами таблица уже или нет, а затем добавляет новые данные (если они существуют) или создает новую таблицу (если нет).chunksize
записывает записи партиями заданного размера за раз. По умолчанию все строки будут записаны сразу.
3.2.1. Запросите базу данных, чтобы проверить нашу работу
Опять же, давайте запросим базу данных, чтобы убедиться, что наши вставленные данные были сохранены правильно.
# Execute query sql = "SELECT * FROM iris" cursor.execute(sql)
# Fetch all the records result = cursor.fetchall() for i in result: print(i)
# Close the connection
if (conn.is_connected()):
cursor.close()
conn.close()
print(“MySQL connection is closed”)
Заключение
В этом руководстве мы обсудили, как импортировать Pandas DataFrames в базы данных MySQL, используя два разных метода, включая высокоэффективный метод to_sql()
.
Весь код для этой статьи доступен как Блокнот Jupyter на GitHub.
Найдите самый быстрый способ импортировать данные CSV в базу данных MySQL с помощью Python
Оставайтесь позитивными !! Оставайтесь в безопасности !! Продолжайте учиться :) :)
Спасибо за внимание! !