Check In tool source code based on Build tool project revision r1655.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8964 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
120
BaseTools/Source/Python/Common/Database.py
Normal file
120
BaseTools/Source/Python/Common/Database.py
Normal file
@ -0,0 +1,120 @@
|
||||
## @file
|
||||
# This file is used to create a database used by ECC tool
|
||||
#
|
||||
# Copyright (c) 2007 ~ 2008, Intel Corporation
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
|
||||
##
|
||||
# Import Modules
|
||||
#
|
||||
import sqlite3
|
||||
import os
|
||||
|
||||
import EdkLogger as EdkLogger
|
||||
from CommonDataClass.DataClass import *
|
||||
from String import *
|
||||
from DataType import *
|
||||
|
||||
from Table.TableDataModel import TableDataModel
|
||||
from Table.TableFile import TableFile
|
||||
from Table.TableInf import TableInf
|
||||
from Table.TableDec import TableDec
|
||||
from Table.TableDsc import TableDsc
|
||||
|
||||
## Database
|
||||
#
|
||||
# This class defined the build databse
|
||||
# During the phase of initialization, the database will create all tables and
|
||||
# insert all records of table DataModel
|
||||
#
|
||||
# @param object: Inherited from object class
|
||||
# @param DbPath: A string for the path of the ECC database
|
||||
#
|
||||
# @var Conn: Connection of the ECC database
|
||||
# @var Cur: Cursor of the connection
|
||||
# @var TblDataModel: Local instance for TableDataModel
|
||||
#
|
||||
class Database(object):
|
||||
def __init__(self, DbPath):
|
||||
if os.path.exists(DbPath):
|
||||
os.remove(DbPath)
|
||||
self.Conn = sqlite3.connect(DbPath, isolation_level = 'DEFERRED')
|
||||
self.Conn.execute("PRAGMA page_size=8192")
|
||||
self.Conn.execute("PRAGMA synchronous=OFF")
|
||||
self.Cur = self.Conn.cursor()
|
||||
self.TblDataModel = TableDataModel(self.Cur)
|
||||
self.TblFile = TableFile(self.Cur)
|
||||
self.TblInf = TableInf(self.Cur)
|
||||
self.TblDec = TableDec(self.Cur)
|
||||
self.TblDsc = TableDsc(self.Cur)
|
||||
|
||||
## Initialize build database
|
||||
#
|
||||
# 1. Delete all old existing tables
|
||||
# 2. Create new tables
|
||||
# 3. Initialize table DataModel
|
||||
#
|
||||
def InitDatabase(self):
|
||||
EdkLogger.verbose("\nInitialize ECC database started ...")
|
||||
#
|
||||
# Drop all old existing tables
|
||||
#
|
||||
# self.TblDataModel.Drop()
|
||||
# self.TblDsc.Drop()
|
||||
# self.TblFile.Drop()
|
||||
|
||||
#
|
||||
# Create new tables
|
||||
#
|
||||
self.TblDataModel.Create()
|
||||
self.TblFile.Create()
|
||||
self.TblInf.Create()
|
||||
self.TblDec.Create()
|
||||
self.TblDsc.Create()
|
||||
|
||||
#
|
||||
# Initialize table DataModel
|
||||
#
|
||||
self.TblDataModel.InitTable()
|
||||
EdkLogger.verbose("Initialize ECC database ... DONE!")
|
||||
|
||||
## Query a table
|
||||
#
|
||||
# @param Table: The instance of the table to be queried
|
||||
#
|
||||
def QueryTable(self, Table):
|
||||
Table.Query()
|
||||
|
||||
## Close entire database
|
||||
#
|
||||
# Commit all first
|
||||
# Close the connection and cursor
|
||||
#
|
||||
def Close(self):
|
||||
self.Conn.commit()
|
||||
self.Cur.close()
|
||||
self.Conn.close()
|
||||
|
||||
##
|
||||
#
|
||||
# This acts like the main() function for the script, unless it is 'import'ed into another
|
||||
# script.
|
||||
#
|
||||
if __name__ == '__main__':
|
||||
EdkLogger.Initialize()
|
||||
EdkLogger.SetLevel(EdkLogger.DEBUG_0)
|
||||
|
||||
Db = Database(DATABASE_PATH)
|
||||
Db.InitDatabase()
|
||||
Db.QueryTable(Db.TblDataModel)
|
||||
Db.QueryTable(Db.TblFile)
|
||||
Db.QueryTable(Db.TblDsc)
|
||||
Db.Close()
|
||||
|
Reference in New Issue
Block a user