基于PysimpleGUI+pymysql建立的简单管理系统(3)—插入功能

        紧接上文,我们接下来来讲insert.py。

        通过上文的menu.py登录界面,我们输入1选择插入功能,并进入对应的insert.py插入文件中。

        在进行插入操作的之前,我们需要创建好对应的数据库表,存储插入的客户账单信息。

        首先,我们创建名为custome_information的客户信息表:

         其中,custome_name代表客户名,order_name代表订单名,time代表时间,material代表材料,size代表尺寸,quantity代表数量,price代表单价,amount代表金额。

        之后,进行insert.py的代码展示:

import pymysql
import PySimpleGUI as sg
import pandas as pd
import time
import os
import datetime

conn = pymysql.connect(host="localhost",       #设置mysql的连接
                           user="root",  
                           password="...",   
                           db="user_information",       
                           charset="utf8")      
                         
layout = [[sg.Text("请输入客户名")],            #对交互窗口进行设计
          [sg.Input(key='-INPUT-')],           #每个文本之下,插入输入框
          [sg.Text("请输入订单名")],
          [sg.Input(key='-INPUT-')],
          [sg.Text("请输入时间(年.月.日)")],
          [sg.Input(key='-INPUT-')],
          [sg.Text("请输入材料")],
          [sg.Input(key='-INPUT-')],
          [sg.Text("请输入尺寸")],
          [sg.Input(key='-INPUT-')],
          [sg.Text("请输入数量")],
          [sg.Input(key='-INPUT-')],
          [sg.Text("请输入单价")],
          [sg.Input(key='-INPUT-')],
          [sg.Text("请输入金额")],
          [sg.Input(key='-INPUT-')],
          [sg.Text(size=(40,1), key='-OUTPUT-')],
          [sg.Button('ok'), sg.Button('返回'),sg.Button('退出')]]    #设置按钮
window = sg.Window('添加客户账单', layout)
while True:
    event, values = window.read()              #读取输入的值和动作
    if event == '返回':
        time.sleep(0.5)
        window.close()
        os.system('python menu.py')             #返回菜单界面
        break
    if event == sg.WINDOW_CLOSED or event == '退出':
        break 
    format_str = '%Y.%m.%d'                      #设置日期格式
    values = pd.DataFrame([values])
    custome_name = str(values.iat[0,0])          #提取出输入的信息
    if custome_name == '':                       #输入为空时,报错
        window.close()
        layout = [[sg.Text("填写为空或填写格式错误!")],     #设计报错窗口
                [sg.Button('返回')]]
        window = sg.Window('错误', layout)
        while True:
            event, values = window.read()          
            if event == sg.WINDOW_CLOSED:
                break 
            if  event == '返回':
                time.sleep(0.5)
                window.close()
                os.system('python insert.py')    #返回插入界面
                break
    order_name = str(values.iat[0,1])        
    if order_name == '':
        window.close()
        layout = [[sg.Text("填写为空或填写格式错误!")],
                [sg.Button('返回')]]
        window = sg.Window('错误', layout)
        while True:
            event, values = window.read()
            if event == sg.WINDOW_CLOSED:
                break 
            if  event == '返回':
                time.sleep(0.5)
                window.close()
                os.system('python insert.py')
    times = str(values.iat[0,2])
    if times == '':
        window.close()
        layout = [[sg.Text("填写为空或填写格式错误!")],
                [sg.Button('返回')]]
        window = sg.Window('错误', layout)
        while True:
            event, values = window.read()
            if event == sg.WINDOW_CLOSED:
                break 
            if  event == '返回':
                time.sleep(0.5)
                window.close()
                os.system('python insert.py')
                break
    times = datetime.datetime.strptime(times, format_str)    #转换时间格式
    material = str(values.iat[0,3])
    if material == '':
        window.close()
        layout = [[sg.Text("填写为空或填写格式错误!")],
                [sg.Button('返回')]]
        window = sg.Window('错误', layout)
        while True:
            event, values = window.read()
            if event == sg.WINDOW_CLOSED:
                break 
            if  event == '返回':
                time.sleep(0.5)
                window.close()
                os.system('python insert.py')
                break
    size = str(values.iat[0,4])
    if size == '':
        window.close()
        layout = [[sg.Text("填写为空或填写格式错误!")],
                [sg.Button('返回')]]
        window = sg.Window('错误', layout)
        while True:
            event, values = window.read()
            if event == sg.WINDOW_CLOSED:
                break 
            if  event == '返回':
                time.sleep(0.5)
                window.close()
                os.system('python insert.py')
                break
    quantity = int(values.iat[0,5])
    if quantity == '':
        window.close()
        layout = [[sg.Text("填写为空或填写格式错误!")],
                [sg.Button('返回')]]
        window = sg.Window('错误', layout)
        while True:
            event, values = window.read()
            if event == sg.WINDOW_CLOSED:
                break 
            if  event == '返回':
                time.sleep(0.5)
                window.close()
                os.system('python insert.py')
                break
    price = float(values.iat[0,6])
    if price== '':
        window.close()
        layout = [[sg.Text("填写为空或填写格式错误!")],
                [sg.Button('返回')]]
        window = sg.Window('错误', layout)
        while True:
            event, values = window.read()
            if event == sg.WINDOW_CLOSED:
                break 
            if  event == '返回':
                time.sleep(0.5)
                window.close()
                os.system('python insert.py')
                break
    amount = float(values.iat[0,7])
    if amount == '':
        window.close()
        layout = [[sg.Text("填写为空或填写格式错误!")],
                [sg.Button('返回')]]
        window = sg.Window('错误', layout)
        while True:
            event, values = window.read()
            if event == sg.WINDOW_CLOSED:
                break 
            if  event == '返回':
                time.sleep(0.5)
                window.close()
                os.system('python insert.py')
                break
    cursor = conn.cursor()
    #mysql插入语句
    sql ="insert into custome_information  (custome_name,order_name,time,material,size,quantity,price,amount) values ('%s','%s','%s','%s','%s','%s','%s','%s')"%(custome_name,order_name,times.strftime("%Y.%m.%d"),material,size,quantity,price,amount)
    cursor.execute(sql)
    conn.commit()
    cursor.close()
    conn.close()
    window.close()
    os.system('python menu.py')   #插入成功后返回菜单界面
    

接下来将持续更新,delete.py删除等功能的实现。

运行截图:

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python可以通过pymysql模块来连接MySQL数据库,具体步骤如下: 1. 安装pymysql模块 可以通过以下命令来安装pymysql模块: ``` pip install pymysql ``` 2. 连接MySQL数据库 可以使用以下代码来连接MySQL数据库: ``` import pymysql # 打开数据库连接 db = pymysql.connect("host", "username", "password", "database") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print("Database version : %s " % data) # 关闭数据库连接 db.close() ``` 其中,host为MySQL服务器地址,username为MySQL登录用户名,password为MySQL登录密码,database为要连接的数据库名称。以上代码连接成功后,输出数据库版本号。 3. 执行SQL语句 可以使用execute()方法来执行SQL语句,例如: ``` import pymysql # 打开数据库连接 db = pymysql.connect("host", "username", "password", "database") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 执行SQL语句 sql = "SELECT * FROM books" cursor.execute(sql) # 获取所有数据 results = cursor.fetchall() for row in results: id = row[0] title = row[1] author = row[2] price = row[3] print("id=%d,title=%s,author=%s,price=%f" % (id, title, author, price)) # 关闭数据库连接 db.close() ``` 以上代码执行了一个查询语句,查询books表中的所有数据,并输出到控制台。 4. 插入数据 可以使用execute()方法来执行插入数据的SQL语句,例如: ``` import pymysql # 打开数据库连接 db = pymysql.connect("host", "username", "password", "database") # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 插入数据 sql = "INSERT INTO books (title, author, price) VALUES ('Python编程', '张三', 29.99)" cursor.execute(sql) # 提交事务 db.commit() # 关闭数据库连接 db.close() ``` 以上代码向books表中插入了一条数据,提交事务后关闭数据库连接。 以上是使用Python连接MySQL数据库简单示例,可以根据实际需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lwgwl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值