暑期实习总结(焊点数据管理软件开发):Python操作MySQL数据库、Django搭建前端网页、以及Excel中数据与MySQL数据库的互转

暑期实习总结(焊点数据管理软件开发):Python操作MySQL数据库、Django搭建前端网页、以及Excel中数据与MySQL数据库的互转

​ 这一周是我在企业实习的最后一周,在企业做的项目已基本完成。这篇博客的目的也是总结一些项目中的一些小问题,和相关功能的代码总结。

​ 这个项目呢,由于企业的保密性,我并不能在此做一个完整的分享。但我可以做一些简单的介绍,记录我认为的一些技术要点。我在自己的简历中更新的该项目的介绍内容如下:

焊点数据管理软件开发:使用Python语言、MySQL数据库、Django框架开发了一个数据管理软件。使用Django搭建前端网页,使用Python语言处理大量焊点数据集并操作MySQL数据库,完成了智能车间质量二环中焊点数据从Excel到MySQL数据库的整合与存储,以及从MySQL数据库导出为Excel表数据的功能。

​ 主要包含的关键点我认为有以下三个:Python操作数据库、Django搭建前端网页、以及Excel中数据与MySQL数据库的互转。

​ 下面我将介绍一些相关功能样例代码:

连接数据库&使用Python操作数据库

在本项目中,我使用的是pymysql包来连接数据库的。个人感觉这个方法用起来非常方便。这个方法可以直接转译Mysql语言,这对于本身就有Mysql数据库的技术基础的友友来说非常方便。以下案例中,各位可以了解到我以上提到的点。

连接数据库:
def mysql_connection_A():
    # 打开数据库连接
    try:
        global db
        db = pymysql.connect(host='localhost', user='root', passwd='xxxxxx', port=3306)# passwd为用户安装mysql时设置的数据库密码
        print('连接成功!')
    except:
        print('something wrong!')

    # 使用 cursor() 方法创建一个游标对象 cursor
    global cursor
    cursor = db.cursor()
    sql = """use a_shift;
        """# 这里直接转译mysql语句,将操作链接到a_shift这个数据库
    cursor.execute(sql)

    return cursor

该方法用途非常广泛,定义一个变量db来连接数据库,并通过创建一个游标对象来操作数据库。好处就是,用户在mysql中使用的所有sql语句都可以直接在python中完成。比如以上的“use a_shift”就是一段sql语句。

如果还不明白我的意思的话,下面给出一段代码,相信大家会有更深的了解:

sql1 = """DROP TABLE IF EXISTS {table_name}""".format(table_name=table_name)
cursor.execute(sql1)
sql2 = """create table {table_name}(id int primary key auto_increment, weld_num char(8), attr char(16))""".format(table_name=table_name)
cursor.execute(sql2)

# 用于存取/提交数据到数据库的一个函数
def data_commit_sql(query1, values):
     # query:插入数据的sql语句;values:对应的数据库格式的值
     # 存取数据
     cursor.execute(query1, values)
     db.commit()
    
data_commit_sql("INSERT INTO {table_name}(weld_num,attr) VALUES (%s, %s)".format(table_name=table_name), (weld_value, '厚度'))

首先可以看到sql1和sql2两个语句。两者都是sql语句,只不过其中的变量通过format方法给提取出来了。sql1语句的意思如果这个表存在的话,删除该表;sql2语句的意思就是创建一个指定格式的表。由此我们可以知道,通过这样的方法,我们完全能够用python结合简单的sql语句,直接操作数据库,而不需要在数据库中输入任何操作命令。并且其中的变量还能提取出来,从其他途径来获取。

然后就是data_commit_sql(query1, values)这个函数。这个函数实则就是一个游标获取语句和提交数据打包的一个函数。只是由于后面相同的操作太多,我才给他定义的这样一个函数。可以看到函数定义下面的一个例子,insert这个语句。这个语句意思就是在表中插入一些数据。而这个数据是通过values(%s,%s)链接出来的。例子中,第一个%s就对应的weld_value这个变量,第二个%s就对应的’厚度’这个字符串。

所以在pymysql方法的相关操作中,除了最基本的语言方法之外。我们可以通过format()方法和values(%s,)的方法来定义外部变量,从而完成用python操作mysql数据库的相关操作。

Django搭建前端网页

这个网页的搭建方法和教程啥的我这里就不用多说了。具体可以参考我之前的博客,或者去b站看教程:

Django学习记录:初步认识django以及实现了简单的网页登录页面的前后端开发_dumpling0120的博客-CSDN博客

Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查_dumpling0120的博客-CSDN博客

2022 B站最详细django3教程(django从入门到实践)_哔哩哔哩_bilibili

这里提几个功能简单介绍一下。

form表的使用:



    
    Title



用户登录

{% csrf_token %} {{ error_msg }}

这个也是上面有一期博客中已经提到过的登录界面的代码。在这里我想讲的就是,form表的相关使用可以推广。三种类型“text”代表可视化字符,“password”代表不可见的字符(密码),“submit”就是一个提交的跳转按钮。然后使用的时候需要加上{% csrf_token %},不然会报错。

按钮跳转:

1、跳转到某网页:

// 设置按钮


注意这个url需要跳转的网页的地址是需要在urls.py这个文件中定义的:

path('pymysql_testA/', views.pymysql_testA, name='A_shift'),
path('pymysql_testB/', views.pymysql_testB, name='B_shift'),

2、点击按钮后实现某些操作:





这段代码是引入jquery包后的一段JavaScript语言编写的一个按钮响应事件,实现的功能则是如下:

暑期实习总结(焊点数据管理软件开发):Python操作MySQL数据库、Django搭建前端网页、以及Excel中数据与MySQL数据库的互转_第1张图片
点击A班/B班按钮,则可以从数据库中提取并查看A班/B班数据库中的数据总列表,展示在网页中。具体代码示例就是上面的例子。其中上面有个这个:$(‘#is_A_table_generated’).val(‘true’); // 设置隐藏字段的值。这里是一个关键,是我作为后续模块中的一个参数的开关,这个隐藏字段在下面的代码起到了传值的作用。不知道我这么解释大家看得懂不hhh。

请选择您想导出的数据表和存储路径

*数据表名请从原数据库表中复制;存储路径格式举例:D:\PyCharm\file2.xls

{% csrf_token %}

由于本人不太懂JavaScript,故这里不再多赘述。想了解这方面知识的友友可以自行查看相关资料,或私信与我交流。

Excel中数据与MySQL数据库的互转

从excel中将数据传入MySQL中,这个demo其实在第一个大点“连接数据库&使用Python操作数据库”有所涉及。不过我这里还是总结性的讲一下我的一个思路吧。

主要采用的还是下面几个包:

import pandas as pd
import xlwt
import xlrd

下面我就分别讲一下两者互传数据的思路。

从excel中提取数据并存入MySQL

pandas则是用来读取excel数据,然后xlwt和xlrd这两个包则是用来处理表中的值。以下举个简单例子:

excel_data = pd.read_excel(source_file_path_1)
# 提取检测后数据
detect_data = excel_data.iloc[0, 12]
# 提取好的产品数据
good_pro_data = excel_data.iloc[1, 12]

这就是简单的一个pandas读取这个路径下excel表中的值,并将表中相关数据提取出来。然后使用上文提到的data_commit_sql(query1, values)函数将这两个值传进数据库中即可。

从MySQL中提取数据表并存入Excel

由于提取的表格式是不需要改变的,所以这个点我写了一个完整的函数。

def export_to_excel(cursor, table, save_path):
    """
    cursor:     源数据的数据库游标,用于数据库连接
    table       源数据的数据表,指定需要转换的数据库表
    save_path       文件保存路径,指定文件保存的位置和excel文档的名字
    """
    # 创建保存数据库的excel表
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet("sheet1")

    # 首先向excel表中写入数据表的字段
    column_count = cursor.execute("desc %s"%table)
    for i in range(column_count):
       temptuple = cursor.fetchone()
       worksheet.write(0, i, temptuple[0])

    # 向构建好字段的excel表写入所有的数据记录
    row_count = cursor.execute("select * from %s"%table)
    for i in range(row_count):
        temptuple = cursor.fetchone()
        for j in range(column_count):
            worksheet.write(i + 1, j, temptuple[j])

    # 指定路径并保存
    workbook.save(save_path)
    print('文件转换成功')
    
# 应用举例    
export_to_excel(cursorA, '{database_name}'.format(database_name=database_name), r"{storage_path}".format(storage_path=storage_path))

注释中也将相关方法说明得很详细了。在使用中调用该函数export_to_excel(cursor, table, save_path)的时候需要注意下相关格式就好。需要注意的是table表名和save_path的格式。table表名字的话建议format一下,然后路径也是建议加个r,防止路径格式报错。


总结

​ 博主本科机械,研究生做控制。这次在车企实习呢,实习内容又是做数据处理以及相关的前后端开发。虽然看上去毫不沾边,但如果能用两个月的时间多学一个技术栈,想想也是极好的。毕竟有目的性地学习,我认为是可以大大提高我的学习效率。况且在这个信息化的时代,这样类似的数据管理系统,几乎每个企业都是有这样的需求并且能够用得上的。所以,我也是非常感谢这样的机会,让我能够了解企业,真实了解并参与企业的相关项目!

​ 感谢你能看到最后,希望我能与大家多多交流技术,一起进步,一起成长!

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