python实现外卖信息管理系统

本文为大家分享了python实现外卖信息管理系统的具体代码,供大家参考,具体内容如下

一、需求分析

需求分析包含如下:

1、问题描述

以外卖信息系统管理员身份登陆该系统,实现对店铺信息、派送员信息、客服人员信息、订单信息、配送信息等进行有条件查询以及信息的录入、修改、删除等功能。

2、系统功能描述

(1)信息录入:使用wxpython设计排版编写窗口界面,给出录入信息的接口,通过python语句实现与数据库的连接,从而向数据库中插入相应数据。

(2)信息修改:使用wxpython设计排版编写窗口界面,给出修改信息的接口,通过python语句实现与数据库的连接,从而修改数据库中相应数据。

(3)信息查询:在窗口界面中,通过响应的按钮触发,实现与数据库的连接查询,得到所有在线店铺信息。

(4)数据统计:在数据库中编写相应的存储过程,输入店铺名称即可select其所管理的派送员和客服人员。

3、系统功能模块图

python实现外卖信息管理系统

二、概念结构设计

系统整体的E-R模型:

python实现外卖信息管理系统

三、逻辑结构设计

本系统所用到的表结构以及其联系:

1、店铺基本信息foodshop表

python实现外卖信息管理系统

主键:shop_name

2、客服基本信息server表 python实现外卖信息管理系统

主键:server_id

外键:shopname_shop_name

参考表:shopname 参考属性:shop_name

3、派送员基本信息courier表

python实现外卖信息管理系统

主键:courier_id

外键:shopname_shop_name

参考表:shopname 参考属性:shop_name

4、学生基本信息student表

python实现外卖信息管理系统

主键:student_phone

5、订单基本信息book表

python实现外卖信息管理系统

主键:(student_phone,server_id)

外键:student_phone,参考表student,参考属性student_phone

外键:server_id,参考表server,参考属性server_id

6、配送基本信息delivery表

python实现外卖信息管理系统

主键:(student_phone,courier_id)

外键:student_phone,参考表student,参考属性student_phone

外键:courier_id,参考表courier,参考属性courier_id

四、具体实现

登陆界面:

python实现外卖信息管理系统

附上源代码:

# coding:utf8

###########################################################################
## Python code generated with wxFormBuilder (version Jun 17 2015)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################

import wx #导入wxpyhton,pyhton自带的GUI库
#import wx.xrc

import pymysql #用于操作数据库
import sys
reload(sys)
sys.setdefaultencoding('utf8')

###########################################################################
## Class MyFrame1
###########################################################################

#建一个窗口类MyFrame1继承wx.Frame
class MyFrame1(wx.Frame):
  def __init__(self, parent):
    #Wx.Frame (parent, id, title, pos, size, style, name)
    wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"外卖信息管理系统", pos=wx.DefaultPosition, size=wx.Size(610, 400),
             style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
    self.Center() #居中显示

    # 小构件,如按钮,文本框等被放置在面板窗口。 wx.Panel类通常是被放在一个wxFrame对象中。这个类也继承自wxWindow类。
    self.m_panel1 = wx.Panel(self)
    # 标签,一行或多行的只读文本,Wx.StaticText(parent, id, label, position, size, style)
    self.m_staticText1 = wx.StaticText(self.m_panel1, wx.ID_ANY, u"关于店铺:", (20, 20))
    self.m_button1 = wx.Button(self.m_panel1, wx.ID_ANY, u"店铺信息", (130, 20), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button2 = wx.Button(self.m_panel1, wx.ID_ANY, u"店铺上架", (250, 20), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button3 = wx.Button(self.m_panel1, wx.ID_ANY, u"店铺下架", (370, 20), wx.DefaultSize,
                  style=wx.BORDER_MASK)

    self.m_staticText2 = wx.StaticText(self.m_panel1, wx.ID_ANY, u"关于派送员:", (20, 90))
    self.m_button4 = wx.Button(self.m_panel1, wx.ID_ANY, u"派送员信息", (130, 90), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button5 = wx.Button(self.m_panel1, wx.ID_ANY, u"聘请派送员", (250, 90), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button6 = wx.Button(self.m_panel1, wx.ID_ANY, u"解雇派送员", (370, 90), wx.DefaultSize,
                  style=wx.BORDER_MASK)

    self.m_staticText3 = wx.StaticText(self.m_panel1, wx.ID_ANY, u"关于客服人员:", (20, 160))
    self.m_button7 = wx.Button(self.m_panel1, wx.ID_ANY, u"客服人员信息", (130, 160), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button8 = wx.Button(self.m_panel1, wx.ID_ANY, u"聘请客服人员", (250, 160), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button9 = wx.Button(self.m_panel1, wx.ID_ANY, u"解雇客服人员", (370, 160), wx.DefaultSize,
                  style=wx.BORDER_MASK)

    self.m_staticText4 = wx.StaticText(self.m_panel1, wx.ID_ANY, u"关于订单:", (20, 230))
    self.m_button10 = wx.Button(self.m_panel1, wx.ID_ANY, u"订单信息", (130, 230), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button11 = wx.Button(self.m_panel1, wx.ID_ANY, u"学生订餐", (250, 230), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button12 = wx.Button(self.m_panel1, wx.ID_ANY, u"取消订单", (370, 230), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button13 = wx.Button(self.m_panel1, wx.ID_ANY, u"修改订单", (490, 230), wx.DefaultSize,
                  style=wx.BORDER_MASK)

    self.m_staticText5 = wx.StaticText(self.m_panel1, wx.ID_ANY, u"关于物流:", (20, 300))
    self.m_button14 = wx.Button(self.m_panel1, wx.ID_ANY, u"配送信息", (130, 300), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button15 = wx.Button(self.m_panel1, wx.ID_ANY, u"安排配送", (250, 300), wx.DefaultSize,
                  style=wx.BORDER_MASK)
    self.m_button16 = wx.Button(self.m_panel1, wx.ID_ANY, u"取消配送", (370, 300), wx.DefaultSize,
                  style=wx.BORDER_MASK)

    #按钮绑定对话框的弹出
    #在创建应用程序时,Bind函数可以将按钮的动作与特定的函数绑定,当按钮上有动作时,这个函数就会启动,从而处理响应的事件。
    #个Button被单击发生了EVT_BUTTON事件
    self.m_button1.Bind(wx.EVT_BUTTON, MyDialog11(None).OnClick)
    self.m_button2.Bind(wx.EVT_BUTTON, MyDialog12(None).OnClick)
    self.m_button3.Bind(wx.EVT_BUTTON, MyDialog13(None).OnClick)
    self.m_button4.Bind(wx.EVT_BUTTON, MyDialog21(None).OnClick)
    self.m_button5.Bind(wx.EVT_BUTTON, MyDialog22(None).OnClick)
    self.m_button6.Bind(wx.EVT_BUTTON, MyDialog23(None).OnClick)
    self.m_button7.Bind(wx.EVT_BUTTON, MyDialog31(None).OnClick)
    self.m_button8.Bind(wx.EVT_BUTTON, MyDialog32(None).OnClick)
    self.m_button9.Bind(wx.EVT_BUTTON, MyDialog33(None).OnClick)
    self.m_button10.Bind(wx.EVT_BUTTON, MyDialog41(None).OnClick)
    self.m_button11.Bind(wx.EVT_BUTTON, MyDialog42(None).OnClick)
    self.m_button12.Bind(wx.EVT_BUTTON, MyDialog43(None).OnClick)
    self.m_button13.Bind(wx.EVT_BUTTON, MyDialog44(None).OnClick)
    self.m_button14.Bind(wx.EVT_BUTTON, MyDialog51(None).OnClick)
    self.m_button15.Bind(wx.EVT_BUTTON, MyDialog52(None).OnClick)
    self.m_button16.Bind(wx.EVT_BUTTON, MyDialog53(None).OnClick)

    #设置按钮的背景颜色
    self.m_button1.SetBackgroundColour('#0a74f7')
    self.m_button1.SetForegroundColour('white')
    self.m_button2.SetBackgroundColour('#0a74f7')
    self.m_button2.SetForegroundColour('white')
    self.m_button3.SetBackgroundColour('#0a74f7')
    self.m_button3.SetForegroundColour('white')

    self.m_button4.SetBackgroundColour('#238E23')
    self.m_button4.SetForegroundColour('white')
    self.m_button5.SetBackgroundColour('#238E23')
    self.m_button5.SetForegroundColour('white')
    self.m_button6.SetBackgroundColour('#238E23')
    self.m_button6.SetForegroundColour('white')

    self.m_button7.SetBackgroundColour('#6F4242')
    self.m_button7.SetForegroundColour('white')
    self.m_button8.SetBackgroundColour('#6F4242')
    self.m_button8.SetForegroundColour('white')
    self.m_button9.SetBackgroundColour('#6F4242')
    self.m_button9.SetForegroundColour('white')

    self.m_button10.SetBackgroundColour('#8E6B23')
    self.m_button10.SetForegroundColour('white')
    self.m_button11.SetBackgroundColour('#8E6B23')
    self.m_button11.SetForegroundColour('white')
    self.m_button12.SetBackgroundColour('#8E6B23')
    self.m_button12.SetForegroundColour('white')
    self.m_button13.SetBackgroundColour('#8E6B23')
    self.m_button13.SetForegroundColour('white')

    self.m_button14.SetBackgroundColour('#545454')
    self.m_button14.SetForegroundColour('white')
    self.m_button15.SetBackgroundColour('#545454')
    self.m_button15.SetForegroundColour('white')
    self.m_button16.SetBackgroundColour('#545454')
    self.m_button16.SetForegroundColour('white')

    self.m_panel1.SetBackgroundColour('white') #设置面板的背景颜色

###########################################################################
## Class MyDialog11
###########################################################################

#一个对话框的类继承wx.Dialog
class MyDialog11(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"店铺信息", pos=wx.DefaultPosition, size=wx.Size(302, 362),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "店铺名称", (20, 20))
    wx.StaticText(self.panel, -1, "月销量", (80, 20))

  def OnClick(self, event):

    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()
    try:
      sql = "select * from foodshop"
      cursor.execute(sql)
      rs = cursor.fetchall()
      h = 30
      for row in rs:
        h = h + 20
        shop_name = row[0]
        salenum = row[1] #注意数据库中的数据为数字 int 类型时的读取方式 id = '%d' % i[0]
        wx.StaticText(self.panel, -1, shop_name, (20, h))
        wx.StaticText(self.panel, -1, salenum, (80, h))
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

    self.ShowModal()

###########################################################################
## Class MyDialog12
###########################################################################

class MyDialog12(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"店铺上架", pos=wx.DefaultPosition, size=wx.Size(302, 250),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "请输入店铺名称:", (20, 20))
    # 可编辑文本框的创建使用wx.TextCtrl,默认情况下,文本框只能编辑一行文字(无论文字多长均不换行)
    self.t1 = wx.TextCtrl(self.panel, pos=(130, 20), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入月销量:", (20, 80))
    self.t2 = wx.TextCtrl(self.panel, pos=(130, 80), size=(120, 25))

  def OnClick(self, e):
    dialog12 = MyDialog12(None)
    btn = wx.Button(parent=dialog12.panel, label="上架", pos=(20, 150), size=(100, 45), style=wx.BORDER_MASK)
    btn.Bind(wx.EVT_BUTTON, dialog12.insert)
    dialog12.ShowModal()

  def insert(self, event):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    shop_name = self.t1.GetValue().encode('utf8') #注意GetValue()获取的是unicode编码,
    salenum = self.t2.GetValue().encode('utf8') #你使用的#coding=utf8,那就对获取的数据.encode('utf8')重新编码
    data = (shop_name, salenum)

    try:
      sql = "insert into foodshop values (%s,%s)"
      cursor.execute(sql, data)
      conn.commit() #提交给后台数据库
      dial = wx.MessageDialog(None, '成功上架!', '结果', wx.YES_NO) # 创建一个带按钮的消息框, 语法是(self, 框中内容, 框标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog13
###########################################################################

class MyDialog13(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"店铺下架", pos=wx.DefaultPosition, size=wx.Size(200, 200),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "店铺名称:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(20, 50), size=(120, 25))

  def OnClick(self, e):
    dialog13 = MyDialog13(None)
    btn = wx.Button(parent=dialog13.panel, label="下架", pos=(20, 90), size=(90, 40))
    btn.Bind(wx.EVT_BUTTON, dialog13.delete)
    dialog13.ShowModal()

  def delete(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    shop_name = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码
    try:
      sql = "delete from foodshop where shop_name=%s"
      cursor.execute(sql, shop_name)
      conn.commit()
      dial = wx.MessageDialog(None, '成功下架!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog21
###########################################################################

class MyDialog21(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"派送员信息", pos=wx.DefaultPosition, size=wx.Size(400, 415),
              style=wx.DEFAULT_DIALOG_STYLE)

    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "店铺名称:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(90, 20), size=(120, 25))
    #btn = wx.Button(parent=self.panel, label="查询", pos=(240, 20), size=(70, 25))
    #btn.Bind(wx.EVT_BUTTON, self.find)
    wx.StaticText(self.panel, -1, "派送员编号", (20, 60))
    wx.StaticText(self.panel, -1, "派送员姓名", (120, 60))
    wx.StaticText(self.panel, -1, "派送员电话", (220, 60))

  def OnClick(self, event):
    dialog21 = MyDialog21(None)
    btn = wx.Button(parent=dialog21.panel, label="查询", pos=(240, 20), size=(70, 25))
    btn.Bind(wx.EVT_BUTTON, dialog21.find)
    dialog21.ShowModal()

  def find(self, event):
    '''
    if self.t1.GetValue() == '肯德基':
      wx.StaticText(self.panel, -1, '派送员编号', (20, h))
      wx.StaticText(self.panel, -1, '派送员姓名', (120, h))
    '''
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()
    try:
      sql = "select * from courier"
      cursor.execute(sql)
      rs = cursor.fetchall()
      h = 80
      for row in rs:
        if row[3] == self.t1.GetValue():
          h = h + 20
          courier_id = row[0]
          courier_name = row[1]
          courier_phone = row[2]
          wx.StaticText(self.panel, -1, courier_id, (20, h))
          wx.StaticText(self.panel, -1, courier_name, (120, h))
          wx.StaticText(self.panel, -1, courier_phone, (220, h))
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog22
###########################################################################

class MyDialog22(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"聘请派送员", pos=wx.DefaultPosition, size=wx.Size(400, 350),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "请输入店铺名称:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(140, 20), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入派送员编号:", (20, 80))
    self.t2 = wx.TextCtrl(self.panel, pos=(140, 80), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入派送员姓名:", (20, 140))
    self.t3 = wx.TextCtrl(self.panel, pos=(140, 140), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入派送员电话:", (20, 200))
    self.t4 = wx.TextCtrl(self.panel, pos=(140, 200), size=(120, 25))

  def OnClick(self, e):
    dialog22 = MyDialog22(None)
    btn = wx.Button(parent=dialog22.panel, label="聘请", pos=(20, 250), size=(100, 45))
    btn.Bind(wx.EVT_BUTTON, dialog22.insert)
    dialog22.ShowModal()

  def insert(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    shop_name = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码,
    courier_id = self.t2.GetValue().encode('utf8') # 你使用的#coding=utf8,那就对获取的数据.encode('utf8')
    courier_name = self.t3.GetValue().encode('utf8')
    courier_phone = self.t4.GetValue().encode('utf8')

    data = (courier_id, courier_name, courier_phone, shop_name)

    try:
      sql = "insert into courier values (%s,%s,%s,%s)"
      cursor.execute(sql, data)
      conn.commit()
      dial = wx.MessageDialog(None, '成功聘请派送员!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog23
###########################################################################

class MyDialog23(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"解雇派送员", pos=wx.DefaultPosition, size=wx.Size(200, 200),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "派送员编号:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(20, 50), size=(120, 25))

  def OnClick(self, e):
    dialog23 = MyDialog23(None)
    btn = wx.Button(parent=dialog23.panel, label="解雇", pos=(20, 90), size=(90, 40))
    btn.Bind(wx.EVT_BUTTON, dialog23.delete)
    dialog23.ShowModal()

  def delete(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    courier_id = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码
    try:
      sql = "delete from courier where courier_id=%s"
      cursor.execute(sql, courier_id)
      conn.commit()
      dial = wx.MessageDialog(None, '成功解雇派送员!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog31
###########################################################################

class MyDialog31(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"客服人员信息", pos=wx.DefaultPosition, size=wx.Size(400, 401),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "店铺名称:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(90, 20), size=(120, 25))
    # btn = wx.Button(parent=self.panel, label="查询", pos=(240, 20), size=(70, 25))
    # btn.Bind(wx.EVT_BUTTON, self.find)
    wx.StaticText(self.panel, -1, "客服人员编号", (20, 60))
    wx.StaticText(self.panel, -1, "客服人员姓名", (120, 60))

  def OnClick(self, e):
    dialog31 = MyDialog31(None)
    btn = wx.Button(parent=dialog31.panel, label="查询", pos=(240, 20), size=(70, 25))
    btn.Bind(wx.EVT_BUTTON, dialog31.find)
    dialog31.ShowModal()

  def find(self, event):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()
    try:
      sql = "select * from server"
      cursor.execute(sql)
      rs = cursor.fetchall()
      h = 80
      for row in rs:
        if row[2] == self.t1.GetValue():
          h = h + 20
          server_id = row[0]
          server_name = row[1]
          wx.StaticText(self.panel, -1, server_id, (20, h))
          wx.StaticText(self.panel, -1, server_name, (120, h))
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog32
###########################################################################

class MyDialog32(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"聘请客服人员", pos=wx.DefaultPosition, size=wx.Size(400, 300),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "请输入店铺名称:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(160, 20), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入客服人员编号:", (20, 80))
    self.t2 = wx.TextCtrl(self.panel, pos=(160, 80), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入客服人员姓名:", (20, 140))
    self.t3 = wx.TextCtrl(self.panel, pos=(160, 140), size=(120, 25))

  def OnClick(self, e):
    dialog32 = MyDialog32(None)
    btn = wx.Button(parent=dialog32.panel, label="聘请", pos=(20, 200), size=(100, 45))
    btn.Bind(wx.EVT_BUTTON, dialog32.insert)
    dialog32.ShowModal()

  def insert(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    shop_name = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码,
    server_id = self.t2.GetValue().encode('utf8') # 你使用的#coding=utf8,那就对获取的数据.encode('utf8')
    server_name = self.t3.GetValue().encode('utf8')

    data = (server_id, server_name, shop_name)

    try:
      sql = "insert into server values(%s,%s,%s)"
      cursor.execute(sql, data)
      conn.commit()
      dial = wx.MessageDialog(None, '成功聘请客服!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog33
###########################################################################

class MyDialog33(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"解雇客服人员", pos=wx.DefaultPosition, size=wx.Size(200, 200),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "客服人员编号:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(20, 50), size=(120, 25))

  def OnClick(self, e):
    dialog33 = MyDialog33(None)
    btn = wx.Button(parent=dialog33.panel, label="解雇", pos=(20, 90), size=(90, 40))
    btn.Bind(wx.EVT_BUTTON, dialog33.delete)
    dialog33.ShowModal()

  def delete(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    server_id = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码
    try:
      sql = "delete from server where server_id=%s"
      cursor.execute(sql, server_id)
      conn.commit()
      dial = wx.MessageDialog(None, '成功解雇客服!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog41
###########################################################################

class MyDialog41(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"订单信息", pos=wx.DefaultPosition, size=wx.Size(500, 400),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "买家电话:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(90, 20), size=(120, 25))
    # btn = wx.Button(parent=self.panel, label="查询", pos=(240, 20), size=(70, 25))
    # btn.Bind(wx.EVT_BUTTON, self.find)
    wx.StaticText(self.panel, -1, "客服人员编号", (20, 60))
    wx.StaticText(self.panel, -1, "订单编号", (120, 60))
    wx.StaticText(self.panel, -1, "订单金额", (220, 60))
    wx.StaticText(self.panel, -1, "订餐方式", (320, 60))

  def OnClick(self, e):
    dialog41 = MyDialog41(None)
    btn = wx.Button(parent=dialog41.panel, label="查询", pos=(240, 20), size=(70, 25))
    btn.Bind(wx.EVT_BUTTON, dialog41.find)
    dialog41.ShowModal()

  def find(self, event):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()
    try:
      sql = "select * from book"
      cursor.execute(sql)
      rs = cursor.fetchall()
      h = 80
      for row in rs:
        if row[0] == self.t1.GetValue():
          h = h + 20
          server_id = row[1]
          order_id = row[2]
          order_money = row[3]
          order_way = row[4]
          wx.StaticText(self.panel, -1, server_id, (20, h))
          wx.StaticText(self.panel, -1, order_id, (120, h))
          wx.StaticText(self.panel, -1, order_money, (220, h))
          wx.StaticText(self.panel, -1, order_way, (320, h))
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog42
###########################################################################

class MyDialog42(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"学生订餐", pos=wx.DefaultPosition, size=wx.Size(400, 400),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "请输入买家电话:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(150, 20), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入客服人员编号:", (20, 80))
    self.t2 = wx.TextCtrl(self.panel, pos=(150, 80), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入订单编号:", (20, 140))
    self.t3 = wx.TextCtrl(self.panel, pos=(150, 140), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入订单金额:", (20, 200))
    self.t4 = wx.TextCtrl(self.panel, pos=(150, 200), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入订餐方式:", (20, 260))
    self.t5 = wx.TextCtrl(self.panel, pos=(150, 260), size=(120, 25))

  def OnClick(self, e):
    dialog42 = MyDialog42(None)
    btn = wx.Button(parent=dialog42.panel, label="订餐", pos=(20, 310), size=(100, 45))
    btn.Bind(wx.EVT_BUTTON, dialog42.insert)
    dialog42.ShowModal()

  def insert(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    student_phone = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码,
    server_id = self.t2.GetValue().encode('utf8') # 你使用的#coding=utf8,那就对获取的数据.encode('utf8')
    order_id = self.t3.GetValue().encode('utf8')
    order_money = self.t4.GetValue().encode('utf8')
    order_way = self.t5.GetValue().encode('utf8')

    data = (student_phone, server_id, order_id, order_money, order_way)

    try:
      sql = "insert into book values(%s,%s,%s,%s,%s)"
      cursor.execute(sql, data)
      conn.commit()
      dial = wx.MessageDialog(None, '成功订餐!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog43
###########################################################################

class MyDialog43(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"删除订单", pos=wx.DefaultPosition, size=wx.Size(300, 300),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "客服人员编号:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(20, 50), size=(120, 25))

    wx.StaticText(self.panel, -1, "买家电话:", (20, 90))
    self.t2 = wx.TextCtrl(self.panel, pos=(20, 120), size=(120, 25))

  def OnClick(self, e):
    dialog43 = MyDialog43(None)
    btn = wx.Button(parent=dialog43.panel, label="取消订单", pos=(20, 170), size=(90, 40))
    btn.Bind(wx.EVT_BUTTON, dialog43.delete)
    dialog43.ShowModal()

  def delete(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    server_id = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码
    student_phone = self.t2.GetValue().encode('utf8')
    data = (server_id, student_phone)

    try:
      sql = "delete from book where server_id=%s and student_phone=%s"
      cursor.execute(sql, data)
      conn.commit()
      dial = wx.MessageDialog(None, '成功删除订单!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog44
###########################################################################

class MyDialog44(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"修改订单", pos=wx.DefaultPosition, size=wx.Size(400, 300),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "请输入客服编号:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(160, 20), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入买家电话:", (20, 80))
    self.t2 = wx.TextCtrl(self.panel, pos=(160, 80), size=(120, 25))

    wx.StaticText(self.panel, -1, "请更正订单金额:", (20, 140))
    self.t3 = wx.TextCtrl(self.panel, pos=(160, 140), size=(120, 25))

  def OnClick(self, e):
    dialog44 = MyDialog44(None)
    btn = wx.Button(parent=dialog44.panel, label="确认修改", pos=(20, 200), size=(100, 45))
    btn.Bind(wx.EVT_BUTTON, dialog44.change)
    dialog44.ShowModal()

  def change(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    server_id = self.t1.GetValue().encode('utf8')
    student_phone = self.t2.GetValue().encode('utf8')
    order_money = self.t3.GetValue().encode('utf8')
    data = (order_money, server_id, student_phone)

    try:
      sql = "update book set order_money=%s where server_id=%s and student_phone=%s"
      cursor.execute(sql, data)
      conn.commit()
      dial = wx.MessageDialog(None, '成功修改订单!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog51
###########################################################################

class MyDialog51(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"配送信息", pos=wx.DefaultPosition, size=wx.Size(502, 362),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "买家电话:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(90, 20), size=(120, 25))
    # btn = wx.Button(parent=self.panel, label="查询", pos=(240, 20), size=(70, 25))
    # btn.Bind(wx.EVT_BUTTON, self.find)
    wx.StaticText(self.panel, -1, "派送员编号", (20, 60))
    wx.StaticText(self.panel, -1, "预计派送时间", (120, 60))

  def OnClick(self, e):
    dialog51 = MyDialog51(None)
    btn = wx.Button(parent=dialog51.panel, label="查询", pos=(240, 20), size=(70, 25))
    btn.Bind(wx.EVT_BUTTON, dialog51.find)
    dialog51.ShowModal()

  def find(self, event):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()
    try:
      sql = "select * from delivery"
      cursor.execute(sql)
      rs = cursor.fetchall()
      h = 80
      for row in rs:
        if row[0] == self.t1.GetValue():
          h = h + 20
          courier_id = row[1]
          deliver_time = row[2]
          wx.StaticText(self.panel, -1, courier_id, (20, h))
          wx.StaticText(self.panel, -1, deliver_time, (120, h))
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog52
###########################################################################

class MyDialog52(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"安排配送", pos=wx.DefaultPosition, size=wx.Size(400, 300),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "请输入买家电话:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(160, 20), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入派送员编号:", (20, 80))
    self.t2 = wx.TextCtrl(self.panel, pos=(160, 80), size=(120, 25))

    wx.StaticText(self.panel, -1, "请输入预计派送时间:", (20, 140))
    self.t3 = wx.TextCtrl(self.panel, pos=(160, 140), size=(120, 25))

  def OnClick(self, e):
    dialog52 = MyDialog52(None)
    btn = wx.Button(parent=dialog52.panel, label="配送", pos=(20, 200), size=(100, 45))
    btn.Bind(wx.EVT_BUTTON, dialog52.insert)
    dialog52.ShowModal()

  def insert(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    student_phone = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码,
    courier_id = self.t2.GetValue().encode('utf8') # 你使用的#coding=utf8,那就对获取的数据.encode('utf8')
    deliver_time = self.t3.GetValue().encode('utf8')

    data = (student_phone, courier_id, deliver_time)

    try:
      sql = "insert into delivery values(%s,%s,%s)"
      cursor.execute(sql, data)
      conn.commit()
      dial = wx.MessageDialog(None, '成功安排派送!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

###########################################################################
## Class MyDialog53
###########################################################################

class MyDialog53(wx.Dialog):
  def __init__(self, parent):
    wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"取消配送", pos=wx.DefaultPosition, size=wx.Size(300, 300),
              style=wx.DEFAULT_DIALOG_STYLE)
    self.Center()
    self.panel = wx.Panel(self)
    self.panel.SetBackgroundColour('white')

    wx.StaticText(self.panel, -1, "派送员编号:", (20, 20))
    self.t1 = wx.TextCtrl(self.panel, pos=(20, 50), size=(120, 25))

    wx.StaticText(self.panel, -1, "买家电话:", (20, 90))
    self.t2 = wx.TextCtrl(self.panel, pos=(20, 120), size=(120, 25))

  def OnClick(self, e):
    dialog53 = MyDialog53(None)
    btn = wx.Button(parent=dialog53.panel, label="取消配送", pos=(20, 170), size=(90, 40))
    btn.Bind(wx.EVT_BUTTON, dialog53.delete)
    dialog53.ShowModal()

  def delete(self, e):
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='project', charset='utf8')
    cursor = conn.cursor()

    courier_id = self.t1.GetValue().encode('utf8') # 注意GetValue()获取的是unicode编码
    student_phone = self.t2.GetValue().encode('utf8')
    data = (courier_id, student_phone)

    try:
      sql = "delete from delivery where courier_id=%s and student_phone=%s"
      cursor.execute(sql, data)
      conn.commit()
      dial = wx.MessageDialog(None, '成功取消配送!', '结果', wx.YES_NO) # 创建一个带按钮的对话框, 语法是(self, 内容, 标题, ID)
      dial.ShowModal() # 显示对话框
    except:
      conn.rollback()
    finally:
      cursor.close()
      conn.close()

if __name__ == "__main__":
  app = wx.App()
  MyFrame1(None).Show()
  app.MainLoop()

程序演示:

(1)店铺信息

python实现外卖信息管理系统

(2)店铺上架

python实现外卖信息管理系统

python实现外卖信息管理系统

python实现外卖信息管理系统

(3)店铺下架

python实现外卖信息管理系统

(4)派送员信息

python实现外卖信息管理系统

(5)订单信息

python实现外卖信息管理系统

(6)买家订餐

python实现外卖信息管理系统

(7)修改订单

python实现外卖信息管理系统

查看订单信息确认已经修改

python实现外卖信息管理系统

至此python借助pymysql操作Mysql数据库的增、删、改、查功能演示完毕,剩下功能不一一截图,原理类似。

五、总结

通过本次课程设计,我对本学期所学的“数据库”和python内容有了更深一层的理解和学习。对数据库的认识不再仅仅停留在课本的理论知识上,能够更加清楚的理解其后台的操作流程。对python的应用不再局限于编写简单小程序,而是做到了与数据库进行连接,通过wxpython前台窗口,对数据库传入相应的sql语句,从而实现数据库的插入、修改、增加、删除等操作,实现sql语句的前台明了化。在设计E-R图时,采用了Navicat for mysql这一针对mysql的可视化工具,使得表与表之间的关系得以清晰的呈现,这次课程设计使我获益匪浅,在巩固与拓展知识的同时,还学会了许多工具的使用,这对以后的开发提供了宝贵的经验和基石。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • python实现学生管理系统
  • Python实现学生成绩管理系统
  • 名片管理系统python版
  • Python学生成绩管理系统简洁版
  • Python实现学校管理系统
  • Python实现GUI学生信息管理系统
  • python版学生管理系统
  • python实现用户管理系统
  • 一个简单的Python名片管理系统
  • python实现员工管理系统
时间: 2018-01-10

python实现用户管理系统

本文实例为大家分享了python实现用户管理系统的具体代码,供大家参考,具体内容如下 <python核心编程>第七章练习题第五题 一.题目描述 userpw2.py.下面的问题和例题7.1中的管理名字-密码的键值对数据程序有关. (a) 修改那个脚本,使他能记录用户上次的登陆日期和时间(用time模块),并与用户密码一起保存起来.程序的界面要求用户输入用户名和密码的提示.无论用户名是否登陆成功,都应有提示,在用户登陆成功后,应更新相应用户的上次登陆时间戳.如果本次登陆与上次登陆在时间上相差不超

Python实现学生成绩管理系统

本文实例为大家分享了Python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 基本功能: 输入并存储学生的信息:通过输入学生的学号.姓名.和分数,然后就可以把数据保存在建立的student文件里面. 打印学生的所有信息:通过一个打印函数就可以把所有的信息打印在屏幕上. 修改学生信息:这个功能首先通过查询功能查询出该学生是否存在,如果存在就对该学生的信息进行修改,如果不存在则返回到主界面. 删除学生信息:该功能是对相应的学生进行删除操作,如果学生存在就查找到进行删除. 按学生成绩进行排

python版学生管理系统

写一个学生管理系统,最好用python. 我都没学过python呢,只好开始临时抱佛脚,再到网上找找有没有例子看看,下面是我参照另一个博主写的,中间有一些和我不能融合的错误,我已经解决了. input("\n\nPress the enter key to exit.") def functionList(): # 定义功能菜单 print("---------请输入序号选择您要得功能---------") print("") print(&qu

python实现学生管理系统

python写的简单的学生管理系统,练习python语法. 可以运行在windows和linux下,python 2.7. #!/usr/local/bin/python # -*- coding:utf-8 -*- import os import re #定义学生类 class Student: def __init__(self): self.name = '' self.ID = '' self.score = 0 #根据学生分数进行从大到小的冒泡排序 def BuddleSortByS

一个简单的Python名片管理系统

字符串和列表学完,自己试着写了一个非常简单的Python名片管理系统. 新萌尝试,大佬们不要喷. 修改名片的功能我偷了个懒,因为我不知道怎么通过定义下标,然后通过下标来修改列表内的字符串. 我的思路是,把用户准备修改的名片删除,再把用户新命名的名片添加即可: 如果有大佬有直接修改的办法,欢迎指点一下. 代码如下: name = [] while True: print("="*50) print(" 欢迎进入名片管理系统V1.0") print("1:添加

名片管理系统python版

本文实例为大家分享了python名片管理系统的具体代码,供大家参考,具体内容如下 import os list_all = [] def page(): """输出主页面""" print("*" * 30) print("欢迎使用[名片管理系统]v2.0") print() print("1.新建名片") print("2.查看全部") print("3.

Python学生成绩管理系统简洁版

讲起学生成绩管理系统,从大一C语言的课程设计开始,到大二的C++课程设计都是这个题,最近在学树莓派,好像树莓派常用Python编程,于是学了一波Python,看了一点基本的语法想写点东西练下手. 开发环境:Ubuntu+Python2.7 代码如下: #coding=utf-8 #保存学生信息 studentList=[] def addInfo(name,addr): tempInfo={} tempInfo['name']=name tempInfo['addr']=addr student

python实现员工管理系统

这是一个简易的员工管理系统,实现最简单的功能: 1.登录用户密码验证(错误三次自动退出) 2.支持文本员工的搜索.添加.删除.修改 3.一级层级多个选项.二级层级多个选项,都支持判空.退出.返回上一层级 4.针对删除和修改有员工当前自动搜索到的结果进行参照修改和特殊提醒是否删除 用到的基础知识点比较多: 1.计数器 2.while True 以及给while做退出层级标记 3.if-elif-else 的嵌套使用 4.continue 和 break 以及简单函数定义def 5.键盘抓取 raw

Python 模拟员工信息数据库操作的实例

1.功能简介 此程序模拟员工信息数据库操作,按照语法输入指令即能实现员工信息的增.删.改.查功能. 2.实现方法 • 架构: 本程序采用python语言编写,关键在于指令的解析和执行:其中指令解析主要运用了正则表达式来高效匹配有效信息:指令执行通过一个commd_exe主执行函数和增.删.改.查4个子执行函数来实现,操作方法主要是运用面向对象方法将员工信息对象化,从而使各项操作都能方便高效实现.程序主要函数如下: (1)command_exe(command) 指令执行主函数,根据指令第一个字段

在vue.js中抽出公共代码的方法示例

前言 当我们在使用vue构建中大型项目时,通常会遇到某些经常用的方法以及属性,比如说搭建一个员工管理系统,请求的url需要一个共同的前缀,或者在某几个view中需要用到时间,这个时间是通过某方法格式化之后的等等,如果每次用到都写共同的代码,那样如果之后有变动的话维护起来会非常麻烦. 所以我们就得想办法抽出公共代码,因为vue是组件化开发,我们就会很自然的与es6的module模块化联系到一起.其实当我们在搭建项目结构时就应该先提前埋下伏笔,有一个util文件夹,里面放的就是我们要写的公共代码,其

利用python模拟sql语句对员工表格进行增删改查

本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询,语法支持下面3种: select name,age from staff_data where age > 22                  多个查询参数name,age 用','分割 select * from staff_data where dept = 人事 select * from

将Python的Django框架与认证系统整合的方法

将Django与其他现有认证系统的用户名和密码或者认证方法进行整合是可以办到的. 例如,你所在的公司也许已经安装了LDAP,并且为每一个员工都存储了相应的用户名和密码. 如果用户在LDAP和基于Django的应用上拥有独立的账号,那么这时无论对于网络管理员还是用户自己来说,都是一件很令人头痛的事儿. 为了解决这样的问题,Django认证系统能让您以插件方式与其他认证资源进行交互. 您可以覆盖Diango默认的基于数据库的模式,您还可以使用默认的系统与其他系统进行交互. 指定认证后台 在后台,Dj

Python如何实现MySQL实例初始化详解

前言 相信每位程序员对mysql应该都不陌生,MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.我们在日常开发中少不了要接触mysql. 腾讯云上的mysql实例,初始化的时候,需要自己点击"初始化按钮",然后还要手动输入16位复杂的密码,这个操作比较繁琐,而且如果你一次建立多个实例,这个操作量就很大了,所以必须想办法提高效率,于是就有了下文,批量调用sdk api来实现. 本文主要给大家介绍了关于Python实现MySQL实例初

python的几种开发工具介绍

1 IDLE1.1 IDLE是python创初人Guido van Rossum使用python and Tkinter来创建的一个集成开发环境.要使用IDLE必须安装python and Tkinter.1.2 特性:自动缩进,彩色编码,命令历史(Alt+p,Alt+n)和单词自动(Alt+/)完成.1.3 用IDLE执行Tkinter程序,不要在程序中包括mainloop.IDLE本身就是Tkinter应用程序,它会自动调用mainloop.再调用一次mainloop会与IDLE的事件循环冲

python 如何快速找出两个电子表中数据的差异

最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力. 公司里会有这样的场景:有一张电子表格的内容由两三个部门或者更多的部门用到,这些员工会在维护这些表格中不定期的跟新一些自己部门的数据,时间久了,大家的数据就开始打架了,非常不利于管理.怎样快速找到两个或者多个电子表格中数据的差异呢? 解决办法: 1. Excel自带的方法(有兴趣的自行百度) 2. python 写一个小脚本 #!/usr/bin/env python # -*- coding: utf-8

建立高效率的企业上网管理系统

为了对用户上网进行有效的管理,网络管理员应该尽快建立用户访问管理系统,提高企业内部网接入Internet专线的使用效率.一个完备的用户访问管理系统应该具备以下功能. 1.上网权限管理功能 可以设置每个用户和每台计算机访问Internet的权限:将用户或计算机组织成为用户组,以可以配置的时间段长度为时间单位,以组为管理单位,设置允许上网的时段:可以根据人员.计算机或部门的调整,轻松更改用户或计算机所属组.通过本功能,网络管理员可以将Internet访问权限分配给真正需要的部门和员工,避免资源浪费.

Python的面向对象编程方式学习笔记

类与实例 类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. 下面的示例展示了如何创建一个类: class MyNewObjectType(bases): ''' 创建 MyNewObjectType 类''' class_suite 关键字是 class,紧接着一个类名.随后是定义类的类代码.这里通常由各种各样的定义和声明组成.新式类和经典类声明的最大不同在于,所有新式类必须继承至少一个父类,参数 bases 可以是一个(单继承)或多个(

Python操作SQLite数据库的方法详解

本文实例讲述了Python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简单介绍 SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc