Java开发写的Python程序,新手都来看看吧:简单Mysql数据库增删改查,Excel文件导入导出

python轻松将mysql数据导出到excel报表 在大数据时代,数据分析已经变得越来越受重视,如果您需要经常需要导出报表或者想成为一名数据分析工程师,那就赶快入手`python`吧! 阅读详情

1 运行环境

开发环境清单:

  • IDE:Pycharm(已试验,IDLE也可以直接运行)
  • Python: 3.7
  • Mysql: 8.0.18
  • Pymysql:0.9.3
  • xlrd: 1.2.0
  • xlwt: 1.3.0

2 代码展示

直接引用别人的代码,在下是不屑的.以下代码纯手敲,跑起来问题不大:

import xlrd
import xlwt
import pymysql


class AddressBook:
    def __init__(self):
        self.contacts = None


# 添加联系人
def add_contact():
    sql_str = '''
    insert into contact ( contact_id, contact_name, contact_sex, contact_telephone, 
    contact_email, contact_address)
    values(%s,%s,%s,%s,%s,%s)
    '''
    contact = input_contact()
    if contact is not None:
        value = (contact.contact_id, contact.contact_name,
                 contact.contact_sex, contact.contact_telephone,
                 contact.contact_email, contact.contact_address)
        mysql_manager = MysqlManager(sql_str, value)
        mysql_manager.update()
        print("新增 ==> 操作完毕")
    else:
        return


# 导入数据的添加方法
def add_for_contact(contact):
    sql_str = '''
    insert into contact ( contact_id, contact_name, contact_sex, contact_telephone, 
    contact_email, contact_address)
    values(%s,%s,%s,%s,%s,%s)
    '''
    if check_repeat(contact.contact_id[0]):
        print("编号 [" + str(int(contact.contact_id[0])) + "]重复 ==> 已取消操作 ")
        return
    value = (contact.contact_id, contact.contact_name,
             contact.contact_sex, contact.contact_telephone,
             contact.contact_email, contact.contact_address)
    mysql_manager = MysqlManager(sql_str, value)
    mysql_manager.update()
    print("新增 ==> 操作完毕")


# 删除联系人
def del_contact():
    contact_id = input("请输入待删除的联系人编号: ")
    del_sql = '''
    delete from contact where CAST(contact_id AS CHAR)=%s
    '''
    mysql_manager = MysqlManager(del_sql, contact_id)
    mysql_manager.update()
    print("删除 ==> 操作完毕")


# 编辑联系人
def edit_contact():
    sql_str = '''update contact set contact_id=%s ,contact_name=%s,contact_sex=%s,contact_telephone=%s ,
    contact_email=%s,contact_address=%s  where contact_id=%s '''
    contact_id = input("请输入要编辑的条目编号: ")
    contact = input_contact()
    if contact is not None:
        value = (contact.contact_id, contact.contact_name,
                 contact.contact_sex, contact.contact_telephone,
                 contact.contact_email, contact.contact_address, contact_id)
        print(value)
        mysql_manager = MysqlManager(sql_str, value)
        mysql_manager.update()
    print("编辑 ==> 操作完毕")


# 搜索联系人
def get_contact():
    value = input("请输入查询条件: ")
    sql_str = '''
      select * from contact where 
      cast(contact_id as CHAR ) = %s 
      or contact_name = %s 
      or contact_sex = %s 
      or contact_telephone = %s 
      or contact_email = %s 
      or contact_address = %s 
      '''
    value = (value, value, value, value, value, value)
    mysql_manager = MysqlManager(sql_str, value)
    print("根据条件[" + value.__getitem__(1) + "],查询到如下结果")
    query_result = mysql_manager.query()
    for result in query_result:
        print(result)
    print("查询 ==> 操作完毕")
    print()
    return query_result


# 展示所有联系人
def all_contact():
    all_sql = '''
    select * from contact
    '''
    mysql_manager = MysqlManager(all_sql, None)
    print("---------------------欢欢通讯录------------------------")
    query_result = mysql_manager.query()
    for result in query_result:
        print(result)
    print("-----------------------------------------------------")
    return query_result


# 导入联系人
def import_contact():
    # 指定工作簿
    book = xlrd.open_workbook("H:/20200621-Python-Excel-Test-V1.xlsx")
    # 指定工作表
    sheet = book.sheet_by_index(0)
    # 读取数据
    for i in range(1, sheet.nrows):
        contact_id, contact_name, contact_sex, contact_telephone, contact_email, contact_address = sheet.row_values(i)
        contact = Contact(contact_id, contact_name, contact_sex, contact_telephone,
                          contact_email, contact_address)
        add_for_contact(contact)
    print("数据导入完毕")


# 导出联系人
def export_contact():
    print("正在导出数据,loading...")
    # 创建工作簿
    work_book = xlwt.Workbook()
    # 创建工作表
    work_sheet = work_book.add_sheet('通讯录')
    style = xlwt.easyxf('font:bold on')
    work_sheet.col(3).width = 200 * 22
    work_sheet.col(4).width = 200 * 22
    work_sheet.col(5).width = 200 * 22
    # 写入表头
    work_sheet.write(0, 0, "序号", style)
    work_sheet.write(0, 1, "姓名", style)
    work_sheet.write(0, 2, "性别", style)
    work_sheet.write(0, 3, "手机号码", style)
    work_sheet.write(0, 4, "邮箱地址", style)
    work_sheet.write(0, 5, "通讯地址", style)
    # 写入具体数据
    query_result = all_contact()
    count = 1
    for result in query_result:
        work_sheet.write(count, 0, result[0])
        work_sheet.write(count, 1, result[1])
        work_sheet.write(count, 2, result[2])
        work_sheet.write(count, 3, result[3])
        work_sheet.write(count, 4, result[4])
        work_sheet.write(count, 5, result[5])
        count = count + 1
    work_book.save("H:/20200621-Python-Excel-Test-V2.xls")
    print("导出数据成功,请查看...")


def input_contact():
    contact_id = input("请输入编号: ")
    repeat = check_repeat(contact_id)
    if repeat:
        print("编号重复,已取消操作")
        return
    contact_name = input("请输入姓名: ")
    contact_sex = input("请输入性别: ")
    contact_telephone = input("请输入手机号: ")
    contact_address = input("请输入通讯地址: ")
    contact_email = input("请输入邮箱地址: ")
    contact = Contact(contact_id, contact_name, contact_sex, contact_telephone,
                      contact_email, contact_address)
    print("您所要添加的联系人信息如下:")
    print(contact.__dict__)
    return contact


# 如果传入的contact_id存在重复,那么返回True
def check_repeat(contact_id):
    sql_str = '''
    select contact_id from contact
    '''
    mysql_manager = MysqlManager(sql_str, None)
    query_result = mysql_manager.query()
    repeat = False
    for result in query_result:
        if int(result[0]) == int(contact_id):
            repeat = True
    return repeat


def exit_contact():
    print("当前已退出系统,欢迎下次使用")


class Contact:
    def __init__(self, contact_id, contact_name, contact_sex, contact_telephone,
                 contact_email, contact_address):
        self.contact_id = contact_id,
        self.contact_sex = contact_sex,
        self.contact_name = contact_name,
        self.contact_telephone = contact_telephone,
        self.contact_email = contact_email,
        self.contact_address = contact_address


class MysqlManager:
    def __init__(self, sql_str, value):
        self.sql = sql_str
        self.value = value

    def update(self):
        db = pymysql.connect('127.0.0.1', 'root', 'root', 'python_connection')
        cursor = db.cursor()
        cursor.execute(self.sql, self.value)
        execute_result = cursor.fetchall()
        cursor.close()
        db.commit()
        return execute_result

    def query(self):
        db = pymysql.connect('127.0.0.1', 'root', 'root', 'python_connection')
        cursor = db.cursor()
        cursor.execute(self.sql, self.value)
        execute_result = cursor.fetchall()
        cursor.close()
        db.commit()
        return execute_result


while True:
    functions = {'1': add_contact,
                 '2': del_contact,
                 '3': edit_contact,
                 '4': get_contact,
                 '5': all_contact,
                 '6': export_contact,
                 '7': import_contact,
                 '8': exit_contact}

    print("欢迎使用xx通讯录,小鹿等待您的吩咐... ...")
    print("1.增加联系人")
    print("2.删除联系人")
    print("3.编辑联系人")
    print("4.查询联系人")
    print("5.显示所有联系人")
    print("6.导出excel文件")
    print("7.导入excel文件")
    print("8.退出系统")
    command = input("请输入对应操作数字指令: ")
    func = functions[command]
    func()
    if command == str(8):
        break

3 遇到的错误及解决方案

  1. Excel导出之后,显示文件损坏
    将Excel后缀改为旧版本xls即可解决
  2. 类型转化错误
    特别注意,python的print并不会自动将数值等转化为字符串,需要使用str()进行强制转化

4 一些思考

  1. python中没有switch,如何更优雅地实现相同的功能?
  2. python元组中的元素怎么与实例直接转化?对于数据库中的取到的实例,又如何实现字段部分更新??
python读取excel数据到mysql 最近工作中需要临时将外部的excel数据导入到自己公司的系统中,作为原始的数据进行后续处理,一开始打算写一段程序进行处理的,想想还是放弃了,因为java程序读取excel的数据到mysql总体来说还是比较麻烦的,而且字段要一一对应上,如果是字段特别多,碰巧表也特别多的时候,这个工作量就比较大了,而且极其容易出错 excel生成批量sql语句 小编听说excel可以可以通过简单的函数生成批量的sql... 阅读详情

相关推荐

校友通讯系统课程设计实战:MySQL数据库设计与增删改查程序清单落地

数据库课程设计的核心在于完整实现一个带权限的数据库应用,而非简单拼凑源码。以校友通讯系统为例,其本质是通讯录与信息发布平台的结合,涉及用户管理、信息维护和消息通知。技术选型上,MySQL凭借环境友好、资料丰富成为课程设计首选,配合Java Spring Boot或Python Flask实现后端增删改查。关键设计包括用户表、校友档案表、通讯录分组与条目表、站内信表,通过外键约束保证数据一致性,利用连接池避免并发连接耗尽。程序清单需体现分层结构与关键注释,便于答辩讲解。掌握建库建表、接口调试与索引优化,能有效

weixin_33895695的博客 347

python对excel增删改查_Java开发写的Python程序,新手都来看看吧:简单Mysql数据库增删改查,Excel文件导入导出...

import xlrdimport xlwtimport pymysqlclass AddressBook:def __init__(self):self.contacts = None# 添加联系人def add_contact():sql_str = '''insert into contact ( contact_id, contact_name, contact_sex, contact_...

weixin_39819152的博客 259

C#做的WIN窗体程序-对表的增删改查,导出excel导入,导入数据库

连接数据库(sql2008),压缩包里有源码和SQL代码(3个表,student,college,admin),实现对数据的增删改查,导出excel导入,导入数据库。还有对treeView的应用。该源码可作为初学者很好的参考资料。

Python导入Excel到Mysql数据库

Python导入Excel到Mysql数据库自动创建ID为自增。根据Excel表格表头自动生成数据库字段。

阿狸的博客 3092

手眼标定搞定了,手眼矩阵不知道怎么用?快戳!!

手眼标定得到手眼矩阵到底该咋用? 大家好,我是小鱼。上几期给大家分享了关于手眼标定的方法,如果还有不清楚如何让进行手眼标定的同学可以参考下面的文章: 机器人手眼标定都能搞不定?快戳,最好用的手眼标定库!!! 很多同学做完了手眼标定之后得到了手眼矩阵,但是不知道怎么用于程序当中去,还有很多同学搞不清楚各个坐标系之间的关系,今天小智就给大家讲讲手眼矩阵的使用问题。 一、手眼矩阵为什么会长的不一样? 做完手眼标定,得到的手眼矩阵,有可能会长的不一样,这是因为旋转变换是有很多种表示方法的。 1.旋转的表

生活不止眼前的苟且 5344

Tushare使用教程

@Tushare简易教程 Python财经数据接口Tushare 最近在看量化分析有关的东西,然后第一步先了解的就是如何获取股票交易数据。发现大部分教程都是关于Tushare的,于是在这里简单的介绍一下Tushare的用法吧。目前tushare有免费版本和升级的需要付费的Pro版本。大多数教程写的都是免费版本,但是pro版本提供的数据更多,但是由于本人入坑还不深,暂时还是用的免费版本,但是每次使用都收到提示,“本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/documen

kuangzhi9124的博客 2万+

python向excel写数据_Python向excel中写入数据的方法 方法简单

最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中。数据导入之前需要安装 xlwt依赖包,安装的方法就很简单,直接 pip install xlwt ,如果电脑中安装过就不需要重复安装。接下来就做一个简单的demo ,把三行数据添加到excel中。具体代码如下:#!/usr/bin/env python# coding...

weixin_39670464的博客 1367

记录LeNet的硬件加速器设计(一)

LeNet的硬件加速器设计实现。

2301_81029398的博客 3545

【送书啦】Python操作Mysql(连接、数据探查、写Excel)

三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。第一个是算法关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本。

2401_83916204的博客 1033

安装升级最新版本postman时遇到“无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上.”的问题

软件版本迭代更新真快,最近升级最新Postman版本时出现以下问题 我就简单纪录下解决办法: 备注:我用的是最新的postman工具包:Postman-win64-7.25.0-Setup.exe,目前是最新 0. 前提是已经到postman官网https://www.postman.com/downloads/下载好软件工具包 1.安装window7系统更新补丁KB2533623,请到微软公司官网https://support.microsoft.com/en-us/help/2...

董广明的博客 1万+

告别命令行恐惧!用TBtools的MCScanX插件,5分钟搞定拟南芥和水稻的基因组共线性分析

本文介绍如何利用TBtools的MCScanX插件快速完成拟南芥和水稻的基因组共线性分析,无需命令行操作,5分钟即可生成专业可视化结果。通过图形化界面简化传统MCScanX的复杂流程,特别适合非生物信息背景的研究者,显著提升基因组数据分析效率。

dianzhuique8587的博客 378

python excel修改数据库_【超详细】用Python行云流水地操作Excel和数据库

前言本想就着这个机会学习下Java读取Excel的,奈何搜了一圈,发现还是Pandas最为简单明了。打算先就Python写一版,后面在学习时可能还会发一篇《用Java优雅地操作Excel和数据库》。准备工作软件包关于软件安装和环境配置,网上有成堆的教程,此处不再赘述。大体上需要用到的软件就以下几款:Anaconda(建议用Anaconda里的jupyter notebook,如果喜欢PyCharm...

weixin_32641817的博客 465

DELL SC存储扩容避坑指南:6Gb vs 12Gb扩展柜混插的真相

本文深入解析DELL SC存储扩容中6Gb与12Gb扩展柜混插的核心规则与性能影响。文章指出,从SCOS 7.3版本起允许混插,但整个SAS环路速率将降至最低设备水平,尤其在12Gb控制器上接入6Gb扩展柜会严重拖累性能。指南提供了清晰的兼容性矩阵、实战操作流程及关键避坑清单,帮助管理员安全、高效地完成存储扩容。

weixin_28314575的博客 459

使用Python和SQLAlchemy从MySQL数据库中导出数据到Excel

使用Python和SQLAlchemy从MySQL数据库中导出数据到Excel

我是程序员Amin,关注我,带你学习有趣的计算机知识 1088

NT35310 - LCD显示屏

NT35310 是一个低功耗、26 万色、单芯片的 TFT-LCD 控制器/驱动器,分辨率 480*320,它有一个 345600 字节的显示 RAM 和一整套控制功能。NT35310 支持数字接口(MDDI),MIPI 接口,RGB 接口,8 / 9 / 16 / 18 位8080 接口。可以实现指定的窗口区域可以有选择地更新,以便可以显示运动图像。同时也可以独立显示静止的图像区域。...

m0_62444125的博客 3327

Flink Gauss CDC:深度剖析存量与增量同步的创新设计

开发Flink Gauss CDC是为了适配华为自研GaussDB的特殊日志格式和逻辑复制机制,解决Flink CDC无法直接支持的问题,同时优化存量与增量同步的效率和一体化读取能力,满足GaussDB复合主键处理、数据落库等定制化需求,以实现高效、准确的数据同步。

数据与算法架构提升之路专栏 1985

python提取数据库数据_Python如何读取MySQL数据库表数据

Python如何读取MySQL数据库表数据本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下环境:Python 3.6 ,Window 64bit目的:从MySQL数据库读取目标表数据,并处理代码:# -*- coding: utf-8 -*-import pandas as pdimport pymysql## 加上字符集参数,防止中文乱码dbconn...

weixin_39950081的博客 1090

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

网页开发:MySQL和Python案例

本文介绍了Python+MySQL的基本操作,包括如何安装Mysql,如何装驱动,如何创建连接以及对数据库进行增删改查、分组聚合以及批量读取和处理等操作。但是,本文涉及到的只是对单表进行操作,只是数据库操作的冰山一角;在实际的开发和工作环境中,需要根据实际内容对多表进行操作。

m0_58585940的博客 1808

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

利用python将Mysql信息以Excel文件并作为邮件附件发送

提示 由于当前系统一直使用的是python2.7版本,因此先以这个版本来完成这个代码,python3的区别不是很大,适当调整一下就可以完成。 前言 日常操作用java其实完成起来也是比较方便的,但是在非日常维护期间总有时候会出一些幺蛾子,需要对某些很小的细节进行改动,却又是一次性的,这样用java去操作有时候就会显得有些复杂。而python脚本的话可以很轻量的去处理一些问题,代价只是做几个简简单单的配置。因此这里记录一下最近整理的利用python去处理sql指定信息并生成excel作为附件发送邮件的代码。

weixin_42887211的博客 795

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

一种快速导入Excel数据到mysql数据库的办法

基本需求 导入Excel表格中的数据到mysql数据库是一种常见需求。导入的方法有很多。今天介绍一种用python导入excel数据到mysql的方法。它的好处是执行效率高,导入数据量大。 实施步聚 1,通过python 将excel文件转换为sql插入语句组成的文本文件。为了实现这个功能用到了一个读取excel数据的python模块xlrd。 2.命令行上执行 mysql命令,运行第一步生成的s...

littlezhuhui的专栏 1086

用 Python 处理 CSV 和 Excel 文件

CSV(Comma-Separated Values,逗号分隔值)文件是一种简单的文本文件格式,用于存储表格数据,其中每一行代表一条记录,行中的每个字段通过逗号分隔。CSV 文件通常用于数据交换和存储。它的优点是简单、轻量、易于读取和写入,缺点是无法存储复杂的格式和公式。Excel 文件是一种用于电子表格的文件格式,支持表格数据、公式、图表和其他格式化内容。.xls:Excel 97-2003 的文件格式,基于二进制格式。.xlsx。

想看什么文章都可以私信给我,综合性博客。 1974

MySQL表结构导出(Excel)

又到了写毕设的时候了,计算机专业在写论文第四章系统设计的时候肯定会遇到和我一样的难题——要在论文中将数据库的表结构以表格形式展示出来,小编在度娘搜了很多文章,但是收获不大,很多没有达到我的预期(以表格形式展示出来)。最后,小编决定发挥一下idea的作用,自己写一个工具类,打印数据库中的表的表结构,最后将其保存到excel表中,这样更加方便移到论文中。废话不多说,咱们直接开始。

m0_74289031的博客 1221

自己写的跨数据库的表同步工具

阅读本文大概需要 3.6 分钟。近期在做数据集市,遇到的痛点如下:1、数据采集过程繁琐,重复的脚本编写太多。从不同的数据库抽取数据,需要为不同的数据库写卸数脚本,再传输到数据集市文件服务...

somenzz的博客 1873

如何将数据导入python-Python中如何从数据库把数据导入excel中

import pymysql,xlwt#1、连接mysql#2、执行sql语句#3、获取到sql执行结果#4、写入exceldef conn_mysql(sql):conn = pymysql.connect(host="211.149.218.16",user="jxz",password="",db="jxz",c...

weixin_39793813的博客 883

python实现excel数据与mysql数据库互通有无

【阅读全文】 python在制作一些小工具上本身就有着得天独厚的优势,大多数非标准库的应用只需要进行简单的安装即可使用。 比如:使用python将excel中的数据导入到mysql数据库表中,或是将mysql数据库表中的数据直接导出为excel都只需要简单的几行代码就可以完成,假如使用Java来做这件事强那可就有些复杂了呢。 话不多说,接下来直接进入正题... 这里使用两个python的非标准库来操作,一个是我们比较熟悉的pandas非标准库,使用它来完成excel相关的数据操作。 另外一个则是sqlal.

梦在硅谷的博客 622
下一篇: Vue框架新手教程,一步步搭建即开即用Vue项目:Vue集成axios,Vuex,route和element.js
一步一结
博客等级 码龄7年 50粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值