python基础----10-----python操作mysql

一 前言

对于SQL章节前言->SQL_DQL_排序分页的课程,这里不做记录,因为都是讲MYSQL本身的内容,与python无关。
当然,接下来的课需要用到mysql,所以大家需要自行下载,这并不难。

二 python操作MYSQL基础使用

安装第三方库。

pip install pymysql

2.1 select查询

from pymysql import Connection

# 获取到mysql数据的链接对象
conn = Connection(
    host="localhost",  # 主机名
    port=3306,  # 端口
    user="root",  # 账户
    password="123456"  # 密码
)

# 获取游标对象
cursor = conn.cursor()

# 选择数据库
# conn.select_db("sys")
# 执行sql
# cursor.execute("create tabel test_pymysql(id int);")

# 获取查询结果
conn.select_db("girls")
cursor.execute("select * from boys")
results = cursor.fetchall()
print(type(results))
print(results)

for r in results:
    print(r)

# 关闭
conn.close()

python基础----10-----python操作mysql_第1张图片

python基础----10-----python操作mysql_第2张图片

2.2 commit提交

python基础----10-----python操作mysql_第3张图片
即在pymysql进行插入或者修改的sql语句时,需要添加xxx.commit(),否则无法插入或者修改。

from pymysql import Connection

# 获取到mysql数据的链接对象
conn = Connection(
    host="localhost",  # 主机名
    port=3306,  # 端口
    user="root",  # 账户
    password="123456"  # 密码
)

# 获取游标对象
cursor = conn.cursor()

conn.select_db("girls")
cursor.execute("insert into boys values(5,'乔峰',50)")
# 确认
conn.commit()

# 关闭
conn.close()

插入前的表数据:
python基础----10-----python操作mysql_第4张图片

插入后的表数据:
python基础----10-----python操作mysql_第5张图片

python基础----10-----python操作mysql_第6张图片

三 综合案例

需求:将数据分析案例的两个文件的内容读取出来,将其保存到数据库中。

因为文件有四列,所以我们数据库的表创建对应四个字段,如下图。
python基础----10-----python操作mysql_第7张图片

然后打开DBeaver(Nvicat也可以),输入以下内容创建数据库和表。
python基础----10-----python操作mysql_第8张图片

CREATE DATABASE py_sql charset utf8;
use py_sql;
CREATE TABLE orders(
	order_date DATE,
	order_id VARCHAR(255),
	money INT,
	provice VARCHAR(10)
)

生成打开表。
在这里插入图片描述

data_define.py:

class Record:
    #定义4个成员变量,因为两个数据txt都是四列数据
    def __init__(self,data,order_id,money,provine):
        self.date = data  #订单日期
        self.order_id = order_id#订单ID
        self.money = money#订单金额
        self.provine = provine#订单省份
    def __str__(self):
        return (f"{self.date}, {self.order_id}, {self.money}, {self.provine}")

file_define.py:

import json

from data_define import Record

# 文件父类
class FileReader:
    def read_data(self) :
        pass

# 读取文本文件
class TextFileReader(FileReader):
    def __init__(self,path):
        self.path = path

    # 从文件读取数据,并封装成Record列表返回
    def read_data(self):
        f = open(self.path,"r",encoding="UTF-8")
        record_list = []
        for line in f.readlines():
            line = line.strip() # 去掉\n
            data_list = line.split(",")
            record = Record(data_list[0], data_list[1], int(data_list[2]), data_list[3])
            record_list.append(record)
        f.close()
        return record_list # list[Record]

# 读取json文件
class JsonFileReader(FileReader):
    def __init__(self,path):
        self.path = path

    # 从文件读取数据,并封装成Record列表返回
    def read_data(self):
        f = open(self.path, "r", encoding="UTF-8")
        record_list = []
        for line in f.readlines():
            data_dict = json.loads(line)
            record = Record(data_dict["date"], data_dict["order_id"], int(data_dict["money"]), data_dict["province"])
            record_list.append(record) # list[Record]
        f.close()
        return record_list



if __name__ == '__main__':
     text_file_reader = TextFileReader("C:/Users/Administrator/Desktop/Py/第13章资料/2011年1月销售数据.txt")
     json_file_reader = JsonFileReader("C:/Users/Administrator/Desktop/Py/第13章资料/2011年2月销售数据JSON.txt")
     list1 = text_file_reader.read_data()
     list2 = json_file_reader.read_data()

     for l in list1:
         print(l)
     for l in list2:
         print(l)

main.py:

from file_define import FileReader, TextFileReader, JsonFileReader
from data_define import Record
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType
from pymysql import Connection

text_file_reader = TextFileReader("C:/Users/Administrator/Desktop/Py/第13章资料/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("C:/Users/Administrator/Desktop/Py/第13章资料/2011年2月销售数据JSON.txt")

jan_data: list[Record] = text_file_reader.read_data()
feb_data: list[Record] = json_file_reader.read_data()

all_data: list[Record] = jan_data + feb_data

# 构建mysql链接对象
conn = Connection(
    host="localhost",  # 主机名
    port=3306,  # 端口
    user="root",  # 账户
    password="123456",  # 密码
    autocommit=True  # 手动提交
)
# 获得游标对象
cursor = conn.cursor()
# 选择数据库
conn.select_db("py_sql")

# 组织sql语句
for record in all_data:
    sql = f"insert into orders(order_date, order_id, money, provice) " \
            f"values('{record.date}','{record.order_id}','{record.money}','{record.provine}')"

    # 智行sql语句
    cursor.execute(sql)

print("插入完成")

结果:可以看到,总共有1000条数据被插入。
python基础----10-----python操作mysql_第9张图片

你可能感兴趣的:(python学习,mysql,python,数据库)