目录

前缀

Main

color

Start


前缀

将3个文件保存好之后,放在同一个文件夹中,运行start即可~文件名最好不要修改

Main

import pymysql
import openpyxl
import prettytable as pt
from color import Colored
color = Colored()
x = pt.PrettyTable()
choice = ""
try:conn = pymysql.connect(host="*******",port=3306,user="root",passwd="*********",db="******")#连接自己的数据库即可!print(color.green("二次连接MySQL库成功!"))cursor = conn.cursor()
except Exception as e:print(e)print('连接MySQL库失败')class Main(object):#输出菜单def sendout(self):print("==================================================")print("----------------" + color.yellow("正式") + "·" + color.green("3.9") + "·" + color.cyan("进销存系统") + "---------------")print("-------------------" + color.cyan("1.选择表格") + "---------------------")print("-------------------" + color.cyan("2.创建表格") + "---------------------")print("-------------------" + color.cyan("3.删除表格") + "---------------------")print("-------------------" + color.green("4.本地保存") + "---------------------")print("-------------------5.录入货物---------------------")print("-------------------6.修改货物---------------------")print("-------------------7.查看货物---------------------")print("-------------------8.移除货物---------------------")print("-------------------9. -设置- ---------------------")print("-------------------" + color.red("q.退出系统") + "---------------------")# 主循环【主程序】def run(self):global choicewhile True:if choice == "":choice = self.choose()else:self.sendout()index = input("请输入操作指令:")if index == "1":choice = self.choose()elif index == "2":self.upload()elif index == "3":self.delete()elif index == "4":self.excel()elif index == "5":self.plus()elif index == "6":self.modify()elif index == "7":self.see()elif index == "8":self.remove()elif index == "9":self.option()elif index == "q":print("数据上传中...")conn.close()print("您已退出")print("本文原创,作者" + color.cyan("琉璃果子") + color.red(",请勿抄袭"))returnelse:print(color.red("输入了一个错误指令!请输入1-7"))#选择表格def choose(self):global choicechoice = ""sql = "show tables from erptest"cursor.execute(sql)results = cursor.fetchall()if len(results) >= 1:print("能选择操作的表格如下:")for i in range(len(results)):print(color.green(str(i + 1) + "."),results[i][0])chose = input(color.green("您要选择哪个表格?(输入表格名或编号)"))if self.judge(chose,isint = True):if len(results) >= int(chose):choice = results[int(chose) - 1][0]return choiceelse:for row in results:if row[0] == chose:choice = chosereturn choiceprint(color.red("输入错误请重新输入"))self.choose()else:print("当前没有可操作的表格,正在新建")self.upload()# plus,bbb,ccc 完成了录入货物 [bbb,ccc为plus的判断条件]def plus(self):id = input("请输入货品编号:")if id.isdigit() and int(id) > 0:while self.bbb_good(id):if self.bbb_good(id):print("该编号已占用")id = input("请输入货物编号:")else:print("编号必须为正整数!")id = input("请输入货物编号:")while self.judge(id,isint = False) == False or self.bbb_good(id):if self.bbb_good(id):print("该编号已占用")id = input("请输入货物编号:")good_name = input("请输入货物名称:")good_price = input("请输入货物单价:")while not self.judge(good_price):good_price = input("请输入货物单价:")good_count = input("请输入货物数量:")good_unit = input("输入货物计量单位:")while not self.judge(good_count):good_count = input("请输入货物数量:")good_type = input("请输入货物类型:")sql_insert = "insert into " + choice + "(id,name,number,price,unit,type) values(%s,%s,%s,%s,%s,%s)"try:cursor.execute(sql_insert,(str(id),str(good_name),str(good_count),str(good_price),str(good_unit),str(good_type)))conn.commit()print("添加货物成功!")except Exception as e:print(e)conn.rollback()print('添加失败')# 判断条件,判断数据库中有没有你要添加iddef bbb_good(self,id):global choicesql_fetch = "select * from " + choice + " where id >= 1"cursor.execute(sql_fetch)results = cursor.fetchall()for item in results:if str(item[0]) == id:return Truereturn False# 判断条件,判断输入的格式是否正确def judge(self,str,isint = False):if isint:try:res = int(str)except:print(color.red("您输入的数据格式为非整数"))return Falseelse:return Trueelse:try:res = float(str)except:print(color.red("您输入的数据格式为非小数"))return Falseelse:return True#实现修改功能def modify(self):global choicesql_fetch = "select * from " + choice + " where id >= 1"cursor.execute(sql_fetch)results = cursor.fetchall()id = input("请输入货物编号:")if self.judge(id,isint = True):id = int(id)else:print(color.red("请输入正整数!"))return 0long = len(results)if long >= id and id >= 1:select = input("修改的类型?(名称,数量,单价)")if select == "名称":name = input("将" + color.green("名称") + "修改为?")sql_modify = "update " + choice + " set name = %s where id = %s"cursor.execute(sql_modify,(name,id))self.sql()elif select == "数量":number = input("将" + color.green("数量") + "修改为?")sql_modify = "update " + choice + " set number = %s where id = %s"cursor.execute(sql_modify,(number,id))self.sql()elif select == "单价":price = input ("将" + color.green("单价") + "修改为?")sql_modify = "update " + choice + " set price = %s where id = %s"cursor.execute(sql_modify,(price,id))self.sql()else:print(color.red("输入有误!"))else:print("该货物不存在!")#实现SQL提交功能def sql(self):try:conn.commit()print(color.green("修改成功!"))except Exception as e:print(e)conn.rollback()print(color.red('修改失败'))# 实现移除功能def remove(self):global choicedelete = input("请输入货物编号:")sql_delete = "delete from " + choice + " where id = " + deletec = self.bbb_good(delete)if c:cursor.execute(sql_delete)self.sql()print(color.green("成功移除!"))else:print(color.red("没有该货物!"))# 查看货物def see(self):global choicex.clear_rows()print("输入1隐藏数量")print("输入2隐藏单位")print("输入3隐藏类型")print("按下其他键全部查看")need = input("请输入指令:")x.field_names = [color.cyan("编号"),color.blue("名称"),color.blue("数量"),color.blue("单价"),color.blue("单位"),color.blue("类型")]sql_fetch = "select * from " + choice + " where id >= 1"cursor.execute(sql_fetch)results = cursor.fetchall()for row in results:id = row[0]name = row[1]number = row[2]price = row[3]unit = row[4]type = row[5]x.add_row([id,name,number,price,unit,type])if (need == "1"):print(x.get_string(fields = [color.cyan("编号"),color.blue("名称"),color.blue("单价"),color.blue("单位"),color.blue("类型")]))elif (need == "2"):print(x.get_string(fields = [color.cyan("编号"),color.blue("名称"),color.blue("数量"),color.blue("单价"),color.blue("类型")]))elif (need == "3"):print(x.get_string(fields = [color.cyan("编号"),color.blue("名称"),color.blue("数量"),color.blue("单价"),color.blue("单位")]))else:print(x)#实现删除表格功能def delete(self):sql = "show tables from erptest"cursor.execute(sql)results = cursor.fetchall()print(color.green("可以操作的表格如下:"))for row in results:print(row[0])table = input("请输入要删除的表格名:")if table == choice:c = input(color.yellow("你确定要删除当前的表格吗?(Y/N)"))if c == "Y":if len(results) == 1:print(color.red("当前只有这一个表格,请新创建一个后重试!"))elif table == choice:cursor.execute("drop table if EXISTS " + table)print(color.green("操作成功!"))self.choose()else:cursor.execute("drop table if EXISTS " + table)else:cursor.execute("drop table if EXISTS " + table)print(color.green("操作成功"))#实现创建表格功能def upload(self):sql_create = input("请输入要创建的表格名," + color.red("如果存在会被删除!"))try:e = int(sql_create)print(color.red("开头必须为字母或汉字"))except:sql_createDB = "create table " + sql_create + "(id int(8) primary key auto_increment,name varchar(30) not null,number varchar(5),price varchar(8),unit varchar(10),type varchar(8))"try:cursor.execute("drop table if EXISTS " + sql_create)cursor.execute(sql_createDB)conn.commit()print(color.green("创建成功"))except Exception as e:print(e)conn.rollback()print(color.red("创建失败!!!"))#设置def option(self):print(color.yellow("按下Enter键可以跳过指定设置"))a = input("查看表格样式:* (输入*) - (输入-) | (输入|) + (输入+)")if a == "*":x.junction_char = "*"elif a == "-":x.junction_char = "-"elif a == "|":x.junction_char = "|"elif a == "+":x.junction_char = "+"a = input("查看表格风格(简约 默认 精简):")if a == "简约":x.set_style(pt.PLAIN_COLUMNS)elif a == "默认":x.set_style(pt.DEFAULT)elif a == "精简":x.set_style(pt.MSWORD_FRIENDLY)#实现保存为本地Exceldef excel(self):global choicetry:with conn.cursor() as cursor:cursor.execute("select id,name,number,price,type from " + choice)excel_workbook=openpyxl.Workbook()excel_sheet=excel_workbook.activefor col_id, col_name in enumerate(['id','name','number','price','type']):excel_sheet.cell(1,col_id+1,col_name)for row_id,row_emp in enumerate(cursor.fetchall()):for col_id,col_value in enumerate(row_emp):excel_sheet.cell(row_id+2,col_id+1,col_value)name = input(color.red("(如果表格名存在将被替换)") + "输入表格名:")excel_workbook.save("B:/Save/" + name + ".xlsx")#路径自行设置~print("成功!")except pymysql.MySQLError as err:print(err)

color

from colorama import init,Fore,Back,Style
init (autoreset=True)
class Colored(object):def red(self, s):#红return Fore.LIGHTRED_EX + s + Fore.RESETdef green(self, s):#绿return Fore.LIGHTGREEN_EX + s + Fore.RESETdef yellow(self, s):#黄return Fore.LIGHTYELLOW_EX + s + Fore.RESETdef white(self,s):#白return Fore.LIGHTWHITE_EX + s + Fore.RESETdef blue(self,s):#蓝return Fore.LIGHTBLUE_EX + s + Fore.RESETdef cyan(self,s):#青return Fore.CYAN + s + Fore.RESET
color = Colored()
print(color.green("Welcome"),color.cyan("to"),color.red("colorama!"))

Start

from Main import Main
import pymysql
try:#为防止无法连接MYSQL报错conn = pymysql.connect(host="******",port=3306,user="root",passwd="******",db="******")#连接自己的数据库即可print("连接MySQL库成功!")cursor = conn.cursor()main = Main()main.run()conn.close()
except Exception as e:print(e)print('连接MySQL库失败')

好啦,到这里PyMySQL的进销存系统就全部完毕啦,谢谢~

如果有误,请多多指教

PyMySQL设计-进销存系统-完整版-相关推荐

  1. PyMySQL设计-进销存系统-多彩美化 删除表格 创建表格

    目录 颜色 创建表格 删除表格 总目录 本文持续更新 颜色 相信但你一目扫过去,只有一种单调的颜色,肯定不太喜欢吧?那就给它配上颜色! pip install colorama colorama库,可 ...

  2. java超市进销存系统_Java超市进销存系统完整版JAVA源码下载

    Java超市进销存系统完整版 (3 folders, 4 files, 40.88 KB, 6.18 MB in total.) main_from.gif 724 bytes 软件说明.do ...

  3. java毕业生设计超市货品进销存系统前台计算机源码+系统+mysql+调试部署+lw

    java毕业生设计超市货品进销存系统前台计算机源码+系统+mysql+调试部署+lw java毕业生设计超市货品进销存系统前台计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B ...

  4. 进销存系统的先进先出设计思路解决方案

    进销存系统的先进先出设计思路 如题,进销存一般客户要求先进的货先卖,请问各位大侠有什么好的办法实现这个功能?特别是频繁进货如何实现先进先出 ------解决方案-------------------- ...

  5. java毕业生设计超市货品进销存系统后台计算机源码+系统+mysql+调试部署+lw

    java毕业生设计超市货品进销存系统后台计算机源码+系统+mysql+调试部署+lw java毕业生设计超市货品进销存系统后台计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B ...

  6. 进销存系统数据库设计

    进销存系统数据库设计报告 产品管理功能 1 产品类型基本信息表:(提供增删改) 字段名    类型    宽度    主键否    外键否 类型ID    整数        Yes    No 类型 ...

  7. UML基础、建模与设计实战笔记03第3、4章建模工具简介,常见uml建模工具,创建模块,创建类,用例图,参与者,用例,用例描述,用例之间的可视化表示,用例图建模技术及应用,进销存系统用例图

    1.常见uml建模工具 建模工具应该具有的功能 绘图 存储 一致性检查 对模型进行组织 导航 写作支持 代码生成 逆向项目 集成 支持多种抽象层和开发过程 文档生成 脚本编程 工具主要有 Rose P ...

  8. 超市进销存系统 数据库设计报告

    超市进销存系统 数据库设计报告 注意:本设计报告省略了需求分析部分.实体说明.联系说明.索引说明等,重点是数据库的实现过程以及sql语言的编写以及其他一些我认为的重点展示 另外:本系统前期主要使用了软 ...

  9. 超市进销存系统的设计与实现

    开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 该小型超市进销存系统主要针对模块管理,用户 ...

最新文章

  1. Openstack组件实现原理 — Keystone认证功能
  2. 一文读懂神经网络初始化!吴恩达Deeplearning.ai最新干货
  3. C#连接Oracle数据库的方法(Oracle.DataAccess.Client也叫ODP.net)
  4. 外贸企业网站建设难免遇到难题
  5. php实现socket编程
  6. 谋定5G+工业互联网-陈肇雄:经信研究体系化应用部署规划
  7. wxWidgets:添加控件
  8. seaborn绘图入门1(lineplot+barplot+heatmap+scatterplot)
  9. android 滑动过程 触发,android 代码实现模拟用户点击、滑动等操作
  10. 一个项目了解 SpringBoot 集成 MyBatis
  11. 【干货】12场比赛实战经验分享给你!
  12. cc语言取消引用_「初识C语言」编译过程
  13. Visio2016 层次方框图
  14. 火狐开发----如何快速的安装火狐XPI文件
  15. 华北计算机系统工程研究所 韩庆,华北电力大学学报(自然科学版)
  16. BitTorrent概述
  17. 使用移动云MAS HTTP接口发送短信BASE64加密中文乱码
  18. unity 环境光、模型、材质发绿,绿的发光
  19. 【Python】办公篇-《极客Python之效率革命》(小甲鱼) 笔记一
  20. iOS wifi 路由器 连接

热门文章

  1. pta地下迷宫探索(详解)
  2. unity 美术总结
  3. SpringBoot的yaml配置文件,提示Do not use @ for indentation
  4. 计算机开机键英语字母,电脑开机出现英文字母怎么办?
  5. 星载InSAR技术在地质灾害监测领域的应用
  6. Ubuntu16.04安装画流程图工具Dia、微信、网易云音乐、钉钉、百度云盘、搜狗输入法、wps、企业邮箱配置等(持续更新)
  7. STM32——SPI通信
  8. 扯淡Monte-Carlo(一)
  9. 树莓派4b官方系统更换清华源
  10. 前后端分离学习笔记(5) ---[表单的增删改操作;以及为管理员上传头像]