1. MySQL 簡介
MySQL 是一個開源的關系型數據庫管理系統(RDBMS),廣泛用于各種應用程序,支持多種操作系統。它使用 SQL 語言進行數據查詢、管理和操作。
2. MySQL 的主要特點
- 跨平臺:支持多種操作系統,如 Linux、Windows、Mac OS 等。
- 高性能:優化的查詢處理和緩存機制,提供高并發處理能力。
- 安全性:提供用戶認證、訪問控制和數據加密等安全機制。
- 易用性:通過圖形界面和命令行工具簡化數據庫管理。
3. Python 連接 MySQL
Python 通過 pymysql
庫可以方便地與 MySQL 數據庫進行交互。以下是一些基礎操作的示例。
3.1 安裝 pymysql
首先需要安裝 pymysql
庫:
pip install pymysql
3.2 連接數據庫
使用 pymysql
連接 MySQL 數據庫:
from pymysql import Connectionconn = Connection(host="localhost", # 主機名(IP)port=3306, # 端口user="root", # 賬戶password="123456", # 密碼autocommit=True # 設置自動提交
)
3.3 選擇數據庫
conn.select_db("py_sql")
3.4 執行 SQL 語句
cursor = conn.cursor() # 獲取到游標對象
cursor.execute("insert into student values(10001, '周杰輪', 31, '男')")
3.5 查詢數據
cursor.execute("SELECT * FROM orders")
result = cursor.fetchall()
for r in result:print(r)
3.6 關閉連接
conn.close()
4. 數據導入與導出
4.1 從文本文件導入數據
假設有一個文本文件 D:/2011年1月銷售數據.txt
,我們可以使用自定義的 TextFileReader
類讀取數據,并將其導入到 MySQL 數據庫中。
from file_define_mysql import TextFileReader
from data_define_mysql import Record
from pymysql import Connectiontext_file_reader = TextFileReader("D:/2011年1月銷售數據.txt")
jan_data: list[Record] = text_file_reader.read_data()conn = Connection(host="localhost",port=3306,user="root",password="123456",autocommit=True
)
cursor = conn.cursor()
conn.select_db("py_sql")for record in jan_data:sql = f"insert into orders(order_date, order_id, money, province) " \f"values('{record.date}', '{record.order_id}', {record.money}, '{record.province}')"cursor.execute(sql)conn.close()
4.2 從 JSON 文件導入數據
類似地,可以從 JSON 文件讀取數據并導入到 MySQL 數據庫中。
from file_define_mysql import JsonFileReader
from data_define_mysql import Record
from pymysql import Connectionjson_file_reader = JsonFileReader("D:/2011年2月銷售數據JSON.txt")
feb_data: list[Record] = json_file_reader.read_data()conn = Connection(host="localhost",port=3306,user="root",password="123456",autocommit=True
)
cursor = conn.cursor()
conn.select_db("py_sql")for record in feb_data:sql = f"insert into orders(order_date, order_id, money, province) " \f"values('{record.date}', '{record.order_id}', {record.money}, '{record.province}')"cursor.execute(sql)conn.close()
4.3 從 MySQL 導出數據到 JSON 文件
將 MySQL 中的數據導出到 JSON 文件。
from data_define_mysql import Record
from pymysql import Connectionf = open("d:/output.json", "w", encoding="UTF-8")
conn = Connection(host="localhost",port=3306,user="root",password="123456",autocommit=True
)
cursor = conn.cursor()
conn.select_db("py_sql")
cursor.execute("SELECT * FROM orders")
result = cursor.fetchall()for r in result:record = Record(r[0], r[1], r[2], r[3])f.write(record.to_json())f.write("\n")conn.close()
f.close()
5. 注意事項
- 數據安全:在處理敏感數據時,確保使用加密連接和安全密碼。
- 錯誤處理:在實際應用中,應添加錯誤處理邏輯,確保程序的健壯性。
- 性能優化:在處理大量數據時,考慮使用批處理和索引優化查詢性能。
通過以上示例和說明,可以基本掌握 Python 與 MySQL 的交互操作,實現數據的導入、導出和管理。