博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设备管理,连接两个数据库,用的easygui
阅读量:4593 次
发布时间:2019-06-09

本文共 5441 字,大约阅读时间需要 18 分钟。

# -*- coding:GBK -*-import stringimport pymysql as pysimport pymssql as pmsimport easygui as egimport datetimems_server = ''ms_user = ''ms_pass = ''ms_db = ''my_server = ''my_user = ''my_pass = ''my_db = ''def convert_to_tuple(strings):  # 这个函数用来把坑爹的choicebox生成的str转成tuple    strings = strings.split(" ")    s_str = []    for i in strings:        s_str.append((i.strip(string.punctuation)))    t_str = tuple(s_str)    return t_strclass MssqlClass(object):    def __init__(self, conn):        self.conn = conn    def get_user_info(self, name):        cursor = self.conn.cursor()        try:            cursor.execute('select EMAIL '                           'from View_EASY_SYS_USER_HelpDesk '                           'WHERE EMPLOYEE_ID=%s', name)            info = cursor.fetchone()            return info        except Exception as e:            print u'获取用户信息失败' + str(e)        finally:            cursor.close()class MysqlClass(object):    def __init__(self, conn):        self.conn = conn    def get_stock_equip(self):        cursor = self.conn.cursor()        try:            cursor.execute('select eq_id,eq_type,eq_instance from status where status="in"')            rs = cursor.fetchall()            return rs        except Exception as e:            print u'获取在库设备列表失败' + str(e)        finally:            cursor.close()    def get_users_equip(self, name):        cursor = self.conn.cursor()        try:            cursor.execute('select eq_id,eq_type,eq_instance from status where ac_user=\'%s\' AND status=\'out\'' % name)            rs = cursor.fetchall()            if cursor.rowcount < 1:                return None            else:                return rs        except Exception as e:            print u'获取用户借用列表失败' + str(e)        finally:            cursor.close()    def insert_data(self, name, equip, status):        cursor = self.conn.cursor()        try:            cur_date = str(datetime.date.today())            other_infomation = (name, status, cur_date)            info = equip + other_infomation            info = str(info)            cursor.execute('insert into record (eq_id,eq_type,eq_instance,ac_user,status,ac_date) values ' + info)        except Exception as e:            print u'插入信息失败' + str(e)        finally:            cursor.close()    def update_data(self, name, status, eq_id):        cursor = self.conn.cursor()        try:            cur_date = datetime.date.today()            cursor.execute('update status set ac_user=\'%s\',status=\'%s\',ac_date=\'%s\' where eq_id=\'%s\'' % (name, status, cur_date, eq_id))        except Exception as e:            print u'更新信息失败' +str(e)        finally:            cursor.close()def action():    user_name = eg.enterbox(msg=u'请输入域账户名:', title=u'请输入')    if user_name == '':        eg.msgbox(u'错误,请输入域账户名称!')        return False    elif user_name == None:        return 2    # 获取用户信息    msconn = pms.connect(ms_server, ms_user, ms_pass, ms_db)    ms = MssqlClass(msconn)    user_info = ms.get_user_info(user_name)    msconn.close()    if user_info == None:        eg.msgbox(u'域账号不正确或没有创建')        return False    # 确认用户信息    # 请用户选择操作    selection = eg.buttonbox(msg=u'请选择您的操作', title=u'请选择操作',                                 choices=(u'借用', u'归还'))    if selection == u'借用':        myconn = pys.connect(my_server, my_user, my_pass, my_db)        try:            my = MysqlClass(myconn)            stock_equip = my.get_stock_equip()            borrow_equip = eg.choicebox(msg=u'请选择要借用的设备', title=u'借用列表', choices=stock_equip)            if borrow_equip == None:                eg.msgbox(u'您取消了操作')                # myconn.close()                return False            else:                borrow_equip = convert_to_tuple(borrow_equip)                eq_id = borrow_equip[0]                my.insert_data(user_name, borrow_equip, status='out')                my.update_data(user_name, status='out', eq_id=eq_id)                myconn.commit()                eg.msgbox(msg=u'%s 借用 %s 设备,操作成功!' % (user_name, borrow_equip[2]))        except Exception as e:            eg.msgbox(str(e))            myconn.rollback()        finally:            myconn.close()        return True    elif selection == u'归还':        myconn = pys.connect(my_server, my_user, my_pass, my_db)        my = MysqlClass(myconn)        try:            users_equit = my.get_users_equip(user_name)            if users_equit == None:                eg.msgbox(u'您没有借用设备!')                # myconn.close()                return False            else:                giveback_equit = eg.choicebox(msg=u'请选择要归还的设备', title=u'用户借用的设备', choices=users_equit)                if giveback_equit == None:                    eg.msgbox(u'用户取消')                    # myconn.close()                    return False                else:                    giveback_equit = convert_to_tuple(giveback_equit)                    eq_id = giveback_equit[0]                    my.insert_data(user_name, giveback_equit, status='in')                    my.update_data(user_name, status='in', eq_id=eq_id)                    myconn.commit()                    eg.msgbox(msg=u'%s 归还 %s 设备,操作成功!' % (user_name, giveback_equit[2]))        except Exception as e:            eg.msgbox(str(e))            myconn.rollback()        finally:            myconn.close()        return True    else:        return Falsewhile 1:    res = action()    if res == 2:        break

 

转载于:https://www.cnblogs.com/sunchao1984/p/5161130.html

你可能感兴趣的文章
以太坊(一)
查看>>
禁用php函数
查看>>
CorelDRAW X8超低价优惠啦,你却还在用CDR X4破解?!
查看>>
11.5随笔
查看>>
[err]default argument given for parameter 3 of '***'
查看>>
spring bean depends on
查看>>
51nod1256【exgcd求逆元】
查看>>
HTTP长连接和短连接
查看>>
django使用JWT保存用户登录信息
查看>>
XSL:转换从哪里开始?
查看>>
iconv vs mb_convert_encoding
查看>>
跨域Ajax的实现
查看>>
电子商务分类
查看>>
项目变更管理
查看>>
make报错make: *** [sapi/cli/php] Error 1
查看>>
关于Java中~的问题
查看>>
[C/C++语言标准] ISO C99/ ISO C11/ ISO C++11/ ISO C++14/ISO C++17 Downloads
查看>>
44.Linux君正X1000-添加st7789v显示
查看>>
AC日记——大小写字母互换 openjudge 1.7 14
查看>>
第二届长三角音视频技术交流会筹备中
查看>>