2016-11-21 67 views
1

我正在写一个涉及多个INSERT语句的类,它被分成不同的函数。举例来说,我正在为employeeStart写一个类,当员工开始工作时,我给了一个工作人员姓名并将该值插入粮食staff_id | staff_name的表'职员'中。 staff_id是一个auto_increment字段,因此它使用新的值填充自己。我在哪里可以在Python类中建立一个用于运行多个查询的数据库连接?

然后我抓住该staff_id值并将其插入表'徽章',其中有badge_number | staff_id谷物,其中bade_number也是自动增量。

因此类的样子:

class employeeStart: 
    staff_id = None 
    badge_number = None 

    def __init__(self, staff_name): 
     self.staff_id = setStaffId(staff_name) 
     self.badge_number = setBadgeNumber(staff_id) 

这是所有MySQL数据库,所以我建立数据库连接只有一次,对吗?如果是这样,那么应该发生什么?它会在__init__函数之前,在__init__函数之内,还是在第一个将运行的函数之前 - setStaffId

回答

1

您可以使用contex管理器语法MySQLdb来处理连接和错误处理,将查询包装在with语句中。

import MySQLdb 

class employeeStart: 

    def set_staff_id(self, connection): 
     with connection as cursor:   
      cursor.execute("INSERT INTO staff (name) VALUES (%s)", staff_name) 
      return cursor.lastrowid 

    def set_badge_id(self, connection): 
     with connection as cursor:   
      cursor.execute("INSERT INTO badge (staffid) VALUES (%s)", staff_id) 
      return cursor.lastrowid 

    def __init__(self): 
     connection = MySQLdb.connect(...) 
     self.staff_id = self.set_staf_id(connection) 
     self.badge_id = self.set_badge_id(connection) 

但我实在看不出这里一类的需要...

相关问题