| 45 | # @var TblDataModel: Local instance for TableDataModel |
| 46 | # |
| 47 | class Database(object): |
| 48 | def __init__(self, DbPath): |
| 49 | self.DbPath = DbPath |
| 50 | self.Conn = None |
| 51 | self.Cur = None |
| 52 | self.TblDataModel = None |
| 53 | self.TblFile = None |
| 54 | self.TblFunction = None |
| 55 | self.TblIdentifier = None |
| 56 | self.TblPcd = None |
| 57 | self.TblReport = None |
| 58 | self.TblInf = None |
| 59 | self.TblDec = None |
| 60 | self.TblDsc = None |
| 61 | self.TblFdf = None |
| 62 | |
| 63 | ## Initialize ECC database |
| 64 | # |
| 65 | # 1. Delete all old existing tables |
| 66 | # 2. Create new tables |
| 67 | # 3. Initialize table DataModel |
| 68 | # |
| 69 | def InitDatabase(self, NewDatabase = True): |
| 70 | EdkLogger.verbose("\nInitialize ECC database started ...") |
| 71 | # |
| 72 | # Drop all old existing tables |
| 73 | # |
| 74 | if NewDatabase: |
| 75 | if os.path.exists(self.DbPath): |
| 76 | os.remove(self.DbPath) |
| 77 | self.Conn = sqlite3.connect(self.DbPath, isolation_level = 'DEFERRED') |
| 78 | self.Conn.execute("PRAGMA page_size=4096") |
| 79 | self.Conn.execute("PRAGMA synchronous=OFF") |
| 80 | # to avoid non-ascii character conversion error |
| 81 | self.Conn.text_factory = str |
| 82 | self.Cur = self.Conn.cursor() |
| 83 | |
| 84 | self.TblDataModel = TableDataModel(self.Cur) |
| 85 | self.TblFile = TableFile(self.Cur) |
| 86 | self.TblFunction = TableFunction(self.Cur) |
| 87 | self.TblIdentifier = TableIdentifier(self.Cur) |
| 88 | self.TblPcd = TablePcd(self.Cur) |
| 89 | self.TblReport = TableReport(self.Cur) |
| 90 | self.TblInf = ModuleTable(self.Cur) |
| 91 | self.TblDec = PackageTable(self.Cur) |
| 92 | self.TblDsc = PlatformTable(self.Cur) |
| 93 | self.TblFdf = TableFdf(self.Cur) |
| 94 | |
| 95 | # |
| 96 | # Create new tables |
| 97 | # |
| 98 | if NewDatabase: |
| 99 | self.TblDataModel.Create() |
| 100 | self.TblFile.Create() |
| 101 | self.TblFunction.Create() |
| 102 | self.TblPcd.Create() |
| 103 | self.TblReport.Create() |
| 104 | self.TblInf.Create() |