2016-11-21 64 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) 

但我實在看不出這裏一類的需要...

相關問題