Next / Previous / Contents / NM Tech homepage

7.2. staticloader: main()

staticloader
# - - -   m a i n

def main():
    '''Main program.

      [ (the Postgresql server is available) and
        (PASS_FILE names a readable file containing the database
        password for the CBC database) and
        (NATIONS_FILE names a readable, valid data file for
        the nations table) and
        (REGIONS_FILE names a readable, valid data file for
        the regions table whose nation codes are all defined
        in NATIONS_FILE) ->
          that database  :=  that database with the nations
              table and regions table dropped and recreated
              with data from NATIONS_FILE and REGIONS_FILE,
              respectively ]
    '''

The main program starts by connecting to the database. The password is stored in a file readable only by the author, so that it does not appear here.

staticloader
    #-- 1 --
    # [ (the Postgresql server is available) and
    #   (PASS_FILE names a readable file containing the database
    #   password for the CBC database) ->
    #     db  :=  a pycbc.py.CBCData instance connected
    #             to that database ]
    t0 = Timer('Connecting')
    passFile = file ( PASS_FILE )
    password = passFile.readline().strip()
    passFile.close()
    db = pycbc.CBCData(password)
    print t0

Next we drop all the tables and recreate them according to the schema.

staticloader
    #-- 2 --
    # [ db  :=  db with all tables dropped ]
    t1 = Timer('Dropping and recreating tables')
    db.meta.drop_all(checkfirst=True)

    #-- 3 --
    # [ db  :=  db with all tables created according to db.meta ]
    db.meta.create_all()
    print t1

Loading of the nations file is handled in Section 7.3, “staticloader: loadNations(); for the regions file, see Section 7.5, “staticloader: loadRegions().

staticloader
    #-- 4 --
    # [ db  :=  db with the nations table populated from the
    #           file named by NATIONS_FILE ]
    t2 = Timer('Loading static tables')
    loadNations ( db )

    #-- 5 --
    # [ db  :=  db with the regions table populated from the file
    #           named by REGIONS_FILE ]
    loadRegions ( db )

    #-- 6 --
    # [ db  :=  db with the physios table populated from the file
    #           named by PHYSIOS_FILE ]
    loadPhysios ( db)
    print t2

To check that the database was properly loaded, Section 7.9, “staticloader: check() prints a report showing all the nations and regions.

staticloader
    #-- 7 --
    # [ sys.stdout  +:=  report showing nation and region
    #                    tables from db ]
    check ( db )