IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Python封装函数实现MySQL数据库增删改和数据存储 -> 正文阅读

[大数据]Python封装函数实现MySQL数据库增删改和数据存储

作者:%E4%B8%83%E3%80%81%E8%BF%90%E8%A1%8C%E7%BB%93%E6%9E%9C

目录

一、背景介绍

二、封装数据库访问函数

(1)封装数据库连接函数dbconnect

(2)封装SQL查询函数SQLQuery

(3)封装SQL命令函数SQLCommand

三、主函数调用

1.定义主函数main()? ??

(1)插入数据

(2)修改数据

(3)删除数据

(4)查询数据.

(5)输出数据

2.执行主函数

四、通过Pandas保存为CSV文件

五、图形显示查询结果

六、程序代码

七、运行结果


一、背景介绍

? ? ? ?在项目开发中,经常要对常用的功能进行封装,本示例介绍python函数的封装过程,实现对数据库表的增、删、改、查等功能;通过Pandas的dataframe组件实现查询结果保存为CSV文件,以方便后期数据分析使用;借助图形化方法,图形显示查询的结果。mySQL数据库studb结构:

? ? ? ?请参照:Python查询MySQL数据库_强heaven的博客-CSDN博客

二、封装数据库访问函数

(1)封装数据库连接函数dbconnect

Python数据库连接函数使用pymysql.connect方法实现。如下实例:

#数据库连接
def dbConnect():
? ? db = pymysql.connect(host='localhost',
? ? ? ? ? ? ? ? ? ? ?user='root',
? ? ? ? ? ? ? ? ? ? ?password='1234abcd!',
? ? ? ? ? ? ? ? ? ? ?database='studb',
? ? ? ? ? ? ? ? ? ? ?charset='utf8mb4',#mysql字符格式
? ? ? ? ? ? ? ? ? ? ?cursorclass=pymysql.cursors.DictCursor)
? ? return db;

做如下封装:

#定义数据库连接函数
def dbConnect(hostname,username,password,database):
    db = pymysql.connect(host=hostname,user=username,
                         password=password,database=database,
                         charset='utf8mb4',#mysql字符格式
                         cursorclass=pymysql.cursors.DictCursor)
    return db;

(2)封装SQL查询函数SQLQuery

#定义SQL查询函数
def SQLQuery(db,strsql):
    try:
        cursor = db.cursor();
        cursor.execute(strsql);        
        results = cursor.fetchall();       
        return results;
    
    except pymysql.Error as err:
        print(err)
    
    finally:
        cursor.close()
        db.close()    

(3)封装SQL命令函数SQLCommand

#定义SQL命令函数(create、insert、delete、update)
def SQLCommand(db,strsql):
    try:
        cursor = db.cursor();
        cursor.execute(strsql);        
        #事务提交
        db.commit()     
        return True;
    
    except pymysql.Error as err:
        print(err)
    
    finally:
        cursor.close()
        db.close() 

三、主函数调用

1.定义主函数main()? ??

def main():

    hostname='127.0.0.1';#mySQL服务器地址
    username='zcq';
    password='1234abcd!';
    database='studb';

(1)插入数据

#1.插入数据
    db = dbConnect(hostname,username,password,database);#连接数据库
    strsql = """insert into studb.t_student(T_Student_No,T_Student_Name,T_Student_Age,T_Student_Dep)
             values('96055149','朱莉18',18,'科技大学')"""
    ifok = SQLCommand(db,strsql);
    if ifok:
        print("插入成功!\n") 

(2)修改数据

#2.构造更新语句
    db = dbConnect(hostname,username,password,database);#连接数据库
    strsql = """update studb.t_student set T_Student_Age=21 
          where T_Student_Name='张三3'"""
    ifok = SQLCommand(db,strsql);
    if ifok:
        print("修改成功!\n")

(3)删除数据

    #3.删除数据
    db = dbConnect(hostname,username,password,database);#连接数据库
    strsql = """delete from studb.t_student where T_Student_Name like'朱莉%'"""
    ifok = SQLCommand(db,strsql);
    if ifok:
        print("删除成功!\n")

(4)查询数据.

    #4.构造查询语句
    db = dbConnect(hostname,username,password,database);#连接数据库
    strsql = """SELECT T_Student_No,T_Student_Name,T_Student_Age,T_Student_Dep 
           FROM studb.t_student where T_Student_Age>=18 and T_Student_Age<=21"""    
    results = SQLQuery(db,strsql);

(5)输出数据

    #5.输出显示
    inum=0
    print("学号,姓名,年龄,专业")
    for row in results:
        stu_No = row['T_Student_No']
        stu_Name = row['T_Student_Name']
        stu_Age = row['T_Student_Age']
        stu_Dep = row['T_Student_Dep']
        inum += 1
        print("%s,%s,%s,%s"\
              %(stu_No,stu_Name,stu_Age,stu_Dep))
    print("\n代码执行完毕...查询到%d条符合条件记录。" %(inum))

2.执行主函数

main()  

四、通过Pandas保存为CSV文件

    #6.与Pandas对接,保存为CSV文件
    df  = pd.DataFrame(results);
    df.to_csv('stu_query.csv',index=False)
    print(df);
  T_Student_Age T_Student_Dep T_Student_Name T_Student_No
0            18           发电1            张三1      1122101
1            19           发电2            张三2      1122102
2            21           发电3            张三3      1122103
3            18           发电4            张三4      1122104
4            19           发电5            张三5      1122105
5            20           发电6            张三6      1122106
6            18           发电7            张三7      1122107
7            19           发电8            张三8      1122108
8            20           发电9            张三9      1122109
9            20           科信部            朱四1     96055160

五、图形显示查询结果

    #7.图形显示
    test_A1   = df['T_Student_Age']

    plt.figure()
    # 设置matplotlib正常显示中文和负号
    plt.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
    plt.rcParams['axes.unicode_minus']=False     # 正常显示负号
    plt.plot(list(range(len(test_A1))), test_A1, color='r')
    plt.xlabel('满足条件的记录', fontsize=14)
    plt.ylabel('年龄', fontsize=14)
    plt.title('年龄分布曲线', fontsize=10)
    plt.show()

六、程序代码

# -*- coding: utf-8 -*-
"""
Created on Sun Apr  3 14:39:15 2022

@author: zhuchunqiang
"""
import pandas as pd
import matplotlib.pyplot as plt
import pymysql


'''
#数据库连接
def dbConnect():
    db = pymysql.connect(host='localhost',
                     user='root',
                     password='1234abcd!',
                     database='studb',
                     charset='utf8mb4',#mysql字符格式
                     cursorclass=pymysql.cursors.DictCursor)
    return db;
'''

#定义数据库连接函数
def dbConnect(hostname,username,password,database):
    db = pymysql.connect(host=hostname,user=username,
                         password=password,database=database,
                         charset='utf8mb4',#mysql字符格式
                         cursorclass=pymysql.cursors.DictCursor)
    return db;

#定义SQL查询函数
def SQLQuery(db,strsql):
    try:
        cursor = db.cursor();
        cursor.execute(strsql);        
        results = cursor.fetchall();       
        return results;
    
    except pymysql.Error as err:
        print(err)
    
    finally:
        cursor.close()
        db.close()        
 
#定义SQL命令函数(create、insert、delete、update)
def SQLCommand(db,strsql):
    try:
        cursor = db.cursor();
        cursor.execute(strsql);        
        #事务提交
        db.commit()     
        return True;
    
    except pymysql.Error as err:
        print(err)
    
    finally:
        cursor.close()
        db.close()        
    
#定义主函数    
def main():

    hostname='127.0.0.1';#mySQL服务器地址
    username='zcq';
    password='1234abcd!';
    database='studb';
    
    #1.插入数据
    db = dbConnect(hostname,username,password,database);#连接数据库
    strsql = """insert into studb.t_student(T_Student_No,T_Student_Name,T_Student_Age,T_Student_Dep)
             values('96055149','朱莉18',18,'科技大学')"""
    ifok = SQLCommand(db,strsql);
    if ifok:
        print("插入成功!\n")    
        
    #2.构造更新语句
    db = dbConnect(hostname,username,password,database);#连接数据库
    strsql = """update studb.t_student set T_Student_Age=21 
          where T_Student_Name='张三3'"""
    ifok = SQLCommand(db,strsql);
    if ifok:
        print("修改成功!\n")

    #3.删除数据
    db = dbConnect(hostname,username,password,database);#连接数据库
    strsql = """delete from studb.t_student where T_Student_Name like'朱莉%'"""
    ifok = SQLCommand(db,strsql);
    if ifok:
        print("删除成功!\n")

    #4.构造查询语句
    db = dbConnect(hostname,username,password,database);#连接数据库
    strsql = """SELECT T_Student_No,T_Student_Name,T_Student_Age,T_Student_Dep 
           FROM studb.t_student where T_Student_Age>=18 and T_Student_Age<=21"""    
    results = SQLQuery(db,strsql);
    
    #5.输出显示
    inum=0
    print("学号,姓名,年龄,专业")
    for row in results:
        stu_No = row['T_Student_No']
        stu_Name = row['T_Student_Name']
        stu_Age = row['T_Student_Age']
        stu_Dep = row['T_Student_Dep']
        inum += 1
        print("%s,%s,%s,%s"\
              %(stu_No,stu_Name,stu_Age,stu_Dep))
    print("\n代码执行完毕...查询到%d条符合条件记录。" %(inum))
    
    #6.与Pandas对接,保存为CSV文件
    df  = pd.DataFrame(results);
    df.to_csv('stu_query.csv',index=False)
    print(df);
    
    #7.图形显示
    test_A1   = df['T_Student_Age']

    plt.figure()
    # 设置matplotlib正常显示中文和负号
    plt.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
    plt.rcParams['axes.unicode_minus']=False     # 正常显示负号
    plt.plot(list(range(len(test_A1))), test_A1, color='r')
    plt.xlabel('满足条件的记录', fontsize=14)
    plt.ylabel('年龄', fontsize=14)
    plt.title('年龄分布曲线', fontsize=10)
    plt.show()

main()  
    

七、运行结果

runfile('E:/PythonStudy/test/query_def.py', wdir='E:/PythonStudy/test')
插入成功!

修改成功!

删除成功!

学号,姓名,年龄,专业
1122101,张三1,18,发电1
1122102,张三2,19,发电2
1122103,张三3,21,发电3
1122104,张三4,18,发电4
1122105,张三5,19,发电5
1122106,张三6,20,发电6
1122107,张三7,18,发电7
1122108,张三8,19,发电8
1122109,张三9,20,发电9
96055160,朱四1,20,科信部

代码执行完毕...查询到10条符合条件记录。
  T_Student_Age T_Student_Dep T_Student_Name T_Student_No
0            18           发电1            张三1      1122101
1            19           发电2            张三2      1122102
2            21           发电3            张三3      1122103
3            18           发电4            张三4      1122104
4            19           发电5            张三5      1122105
5            20           发电6            张三6      1122106
6            18           发电7            张三7      1122107
7            19           发电8            张三8      1122108
8            20           发电9            张三9      1122109
9            20           科信部            朱四1     96055160

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:15:00  更:2022-04-06 23:18:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:05:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码