Tính năng từ CSVKIT thật tuyệt vời khi chơi với dữ liệu CSV trong bộ nhớ khi bạn đã quen với các truy vấn SQL. Tập tiếp theo của bài viết, chúng tôi sẽ kiểm tra việc chơi với cơ sở dữ liệu và tệp CSV
Tò mò về việc tìm hiểu thêm về Python, Databricks Spark và Data Engineering — Vui lòng theo dõi loạt Bài viết học tập này để đọc và tìm hiểu thêm về Python, Spark và Data Engineering, vui lòng theo dõi Ramesh Nelluri và đăng ký phương tiện
Để 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 pd
irisData = 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
import mysql.connector as msql2 tạo kết nối đến máy chủ MySQL và trả về một đối tượng
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]
import mysql.connector as msql3
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]
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]
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
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 query
sql = "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 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]
Điều gì đang xảy ra ở đây?
import mysql.connector as msql
4 là tên của bảng mà chúng tôi muốn chèn DataFrame của mình vào
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]import mysql.connector as msql
0 cung cấp chi tiết kết nối [nhớ lại rằng chúng tôi đã tạo
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]import mysql.connector as msql
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]
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]import mysql.connector as msql
2kiểm tra xem bảng mà chúng ta 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]
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]import mysql.connector as msql
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
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. 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 query
sql = "SELECT * FROM iris"
cursor.execute[sql]# Fetch all the records
result = cursor.fetchall[]
for i in result:
print[i]
import mysql.connector as msql0
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]
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 msql4 hiệu quả cao
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]