安裝pymysql:
pip install pymysql
創(chuàng)建到MySQL的數(shù)據(jù)庫(kù)鏈接
from pymysql import Connection# 獲取到MySQL數(shù)據(jù)庫(kù)的鏈接對(duì)象conn = Connection( host='localhost', # 主機(jī)名(或IP地址) port=3306, # 端口,默認(rèn)3306 user='root', # 賬戶(hù)名 password='123456' # 密碼)# 打印MySQL數(shù)據(jù)庫(kù)軟件信息print(conn.get_server_info())# 關(guān)閉到數(shù)據(jù)庫(kù)的鏈接conn.close()
執(zhí)行SQL語(yǔ)句
# 執(zhí)行非查詢(xún)性質(zhì)SQL# 獲取游標(biāo)對(duì)象cursor = conn.cursor()# 選擇數(shù)據(jù)庫(kù)conn.select_db('test')# 使用右邊對(duì)象,執(zhí)行sql語(yǔ)句cursor.execute('create table test_pymysql(id INT, info VARCHAR(255));')
# 執(zhí)行查詢(xún)性質(zhì)SQL# 獲取游標(biāo)對(duì)象cursor = conn.cursor()# 選擇數(shù)據(jù)庫(kù)conn.select_db('world')# 使用游標(biāo)對(duì)象,執(zhí)行sql語(yǔ)句cursor.execute('select * from student;')# 獲取查詢(xún)結(jié)果results: tuple = cursor.fetchall()for r in results: print(r)
commit 提交
# 獲取游標(biāo)對(duì)象cursor = conn.cursor()# 選擇數(shù)據(jù)庫(kù)conn.select_db('world')# 使用游標(biāo)對(duì)象,執(zhí)行sql語(yǔ)句cursor.execute('insert into student values(10001,'小蘭花',21);')# 通過(guò)commit確認(rèn)conn.commit()
案例需求:
把面向?qū)ο蟀咐械臄?shù)據(jù)集,用python語(yǔ)言,讀取數(shù)據(jù),將數(shù)據(jù)寫(xiě)入MySQL的功能
首先新建一個(gè)數(shù)據(jù)庫(kù)來(lái)使用,數(shù)據(jù)庫(kù)名稱(chēng):py_sql
基于數(shù)據(jù)結(jié)構(gòu),得到建表語(yǔ)句:
create database py_sql charset utf8;use py_sql;CREATE TABLE orders( order_date DATE, order_id VARCHAR(255), money INT, province VARCHAR(10));
代碼main.py:另外的模塊還是和之前的一樣
from file_define import FileReader, TextFileReader, JsonFileReadrfrom data_define import Recordfrom pymysql import Connectiontext_file_reader = TextFileReader('D:/rfpython/2011年1月銷(xiāo)售數(shù)據(jù).txt')json_file_reader = JsonFileReadr('D:/rfpython/2011年2月銷(xiāo)售數(shù)據(jù)JSON.txt')jan_data: list[Record] = text_file_reader.read_data()feb_data: list[Record] = json_file_reader.read_data()# 將2個(gè)月份的數(shù)據(jù)合并為1個(gè)list來(lái)存儲(chǔ)all_data: list[Record] = jan_data + feb_data# 構(gòu)建MySQL鏈接對(duì)象conn = Connection( host='localhost', # 主機(jī)名(或IP地址) port=3306, # 端口,默認(rèn)3306 user='root', # 賬戶(hù)名 password='123456', # 密碼 autocommit=True # 設(shè)置自動(dòng)提交)# 獲取游標(biāo)對(duì)象cursor = conn.cursor()# 選擇數(shù)據(jù)庫(kù)conn.select_db('py_sql')# 組織SQL語(yǔ)句for record in all_data: sql = f'insert into orders(order_date,order_id,money,province)'\ f'values('{record.date}','{record.order_id}',{record.money},'{record.province}')' # 執(zhí)行SQL語(yǔ)句 cursor.execute(sql)# 關(guān)閉MySQL鏈接對(duì)象conn.close()
運(yùn)行:
聯(lián)系客服