Để bắt đầu, hãy chuẩn bị hoặc xác định tệp CSV mà bạn muốn nhập vào cơ sở dữ liệu MySQL. Ví dụ: tôi đã tải dữ liệu mống mắt từ GitHub
import pandas as pdirisData = pd.read_csv(‘//github.com/Muhd-Shahid/Write-Raw-File-into-Database-Server/raw/main/iris.csv',index_col=False)
irisData.head()
Trong đó, dữ liệu là dấu phân cách bằng dấu phẩy. Mỗi dòng của tệp CSV được kết thúc bằng một ký tự xuống dòng
Bước 2. Kết nối với MySQL và tạo cơ sở dữ liệu
Bây giờ hãy tạo đối tượng kết nối để kết nối với máy chủ MySQL. Hàm tạo connect() tạo kết nối đến máy chủ MySQL và trả về một đối tượng MySQLConnection
import mysql.connector as msqlfrom mysql.connector import Errortry:
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)
Bước 3. Tạo bảng & Nhập dữ liệu CSV vào bảng MySQL
3. 1. Chèn Pandas DataFrames vào cơ sở dữ liệu bằng INSERT
Trước tiên, chúng ta sẽ đảm bảo rằng các tham số cột và kiểu dữ liệu trong bảng SQL mà chúng ta sẽ tạo phải khớp với số lượng cột và kiểu dữ liệu của tệp CSV
Các loại dữ liệu của dữ liệu mống mắt
Chúng tôi sẽ tạo bảng iris trong cơ sở dữ liệu irisDB và chèn các bản ghi vào máy chủ 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. Truy vấn cơ sở dữ liệu để kiểm tra công việc của chúng tôi
hãy truy vấn cơ sở dữ liệu để đảm bảo rằng dữ liệu đã chèn của chúng tôi đã được lưu chính xác
# Execute querysql = "SELECT * FROM iris"
cursor.execute(sql)
# Fetch all the records
result = cursor.fetchall()
for i in result:
print(i)
3. 2. Chèn Pandas DataFrames vào cơ sở dữ liệu bằng hàm to_sql()
# import the modulefrom 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)
Điều gì đang xảy ra ở đây?
- iris là tên của bảng mà chúng tôi muốn chèn Khung dữ liệu của mình vào
- import mysql.connector as msql
from mysql.connector import Errortry:
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)0 cung cấp chi tiết kết nối (nhớ lại rằng chúng tôi đã tạo import mysql.connector as msql
from mysql.connector import Errortry:
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)1 bằng cách sử dụng chi tiết xác thực của chúng tôi ở bước trước) - import mysql.connector as msql
from mysql.connector import Errortry:
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)2kiểm tra xem bảng chúng tôi chỉ định đã tồn tại hay chưa, sau đó nối thêm dữ liệu mới (nếu nó tồn tại) hoặc tạo một bảng mới (nếu nó không tồn tại) - import mysql.connector as msql
from mysql.connector import Errortry:
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 ghi các bản ghi theo lô có kích thước nhất định tại một thời điểm. Theo mặc định, tất cả các hàng sẽ được viết cùng một lúc
3. 2. 1. Truy vấn cơ sở dữ liệu để kiểm tra công việc của chúng tôi
Một lần nữa, hãy truy vấn cơ sở dữ liệu để đảm bảo rằng dữ liệu đã chèn của chúng tôi đã được lưu chính xác
# Execute querysql = "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”)
Phần kết luận
Trong hướng dẫn này, Chúng tôi đã thảo luận cách nhập Pandas DataFrames vào cơ sở dữ liệu MySQL bằng hai phương pháp khác nhau, bao gồm phương pháp import mysql.connector as msql
from mysql.connector import Errortry:
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)4 hiệu quả cao