]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/Table/Table.py
Check In tool source code based on Build tool project revision r1655.
[mirror_edk2.git] / BaseTools / Source / Python / Table / Table.py
1 ## @file
2 # This file is used to create/update/query/erase a common table
3 #
4 # Copyright (c) 2008, Intel Corporation
5 # All rights reserved. This program and the accompanying materials
6 # are licensed and made available under the terms and conditions of the BSD License
7 # which accompanies this distribution. The full text of the license may be found at
8 # http://opensource.org/licenses/bsd-license.php
9 #
10 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 #
13
14 ##
15 # Import Modules
16 #
17 import Common.EdkLogger as EdkLogger
18
19 ## TableFile
20 #
21 # This class defined a common table
22 #
23 # @param object: Inherited from object class
24 #
25 # @param Cursor: Cursor of the database
26 # @param TableName: Name of the table
27 #
28 class Table(object):
29 def __init__(self, Cursor):
30 self.Cur = Cursor
31 self.Table = ''
32 self.ID = 0
33
34 ## Create table
35 #
36 # Create a table
37 #
38 def Create(self, SqlCommand):
39 self.Cur.execute(SqlCommand)
40 self.ID = 0
41 EdkLogger.verbose(SqlCommand + " ... DONE!")
42
43 ## Insert table
44 #
45 # Insert a record into a table
46 #
47 def Insert(self, SqlCommand):
48 self.Exec(SqlCommand)
49
50 ## Query table
51 #
52 # Query all records of the table
53 #
54 def Query(self):
55 EdkLogger.verbose("\nQuery tabel %s started ..." % self.Table)
56 SqlCommand = """select * from %s""" % self.Table
57 self.Cur.execute(SqlCommand)
58 for Rs in self.Cur:
59 EdkLogger.verbose(str(Rs))
60
61 TotalCount = self.GetCount()
62 EdkLogger.verbose("*** Total %s records in table %s ***" % (TotalCount, self.Table) )
63 EdkLogger.verbose("Query tabel %s DONE!" % self.Table)
64
65 ## Drop a table
66 #
67 # Drop the table
68 #
69 def Drop(self):
70 SqlCommand = """drop table IF EXISTS %s""" % self.Table
71 self.Cur.execute(SqlCommand)
72 EdkLogger.verbose("Drop tabel %s ... DONE!" % self.Table)
73
74 ## Get count
75 #
76 # Get a count of all records of the table
77 #
78 # @retval Count: Total count of all records
79 #
80 def GetCount(self):
81 SqlCommand = """select count(ID) from %s""" % self.Table
82 self.Cur.execute(SqlCommand)
83 for Item in self.Cur:
84 return Item[0]
85
86 ## Generate ID
87 #
88 # Generate an ID if input ID is -1
89 #
90 # @param ID: Input ID
91 #
92 # @retval ID: New generated ID
93 #
94 def GenerateID(self, ID):
95 if ID == -1:
96 self.ID = self.ID + 1
97
98 return self.ID
99
100 ## Init the ID of the table
101 #
102 # Init the ID of the table
103 #
104 def InitID(self):
105 self.ID = self.GetCount()
106
107 ## Exec
108 #
109 # Exec Sql Command, return result
110 #
111 # @param SqlCommand: The SqlCommand to be executed
112 #
113 # @retval RecordSet: The result after executed
114 #
115 def Exec(self, SqlCommand):
116 EdkLogger.debug(4, "SqlCommand: %s" % SqlCommand)
117 self.Cur.execute(SqlCommand)
118 RecordSet = self.Cur.fetchall()
119 EdkLogger.debug(4, "RecordSet: %s" % RecordSet)
120 return RecordSet