Beispiel #1
0
def dbf2sqlite():
    db = DAL('sqlite://upload.sqlite',
            pool_size=1, check_reserved=['sqlite'], folder=DATA_SQLITE)
    db = get_model(db)
    for table in db.tables: 
        print '  table', table,
        for row_upper_names in DBF(os.path.join(DATA_FOX, '%s.dbf' % table)):
            something = False
            row_lower_names = {}     # table definitions in applications/viewer/modules/db_model.py and in fox/src/myconversion/myconversion.prg must be the same
            for k, v in row_upper_names.iteritems():
                k = k.lower()
                if v is not None: # k != 'id':
                    something = True
                    row_lower_names[k.lower()] = v   # but fox thurn fields to uppercase and we preffer lowercase
            if something:
                db[table].insert(**row_lower_names)
        db.commit() 
        print ' - done'

    try:                                       # are some import-post-actions defined?
        from myconversion import myconversion  # ./myconversion.py : def myconversion(db): 
        print '  additional data conversion',
        myconversion(db)                       # see www.web2py.com/book, chapter 6 - DAL
        db.commit()                            # auto commit if you miss commit in myconversion()  
        print ' - done'
    except ImportError:
        pass
    db.close()
Beispiel #2
0
class DBDataMixinBase(object):

    def __init__(self, dbconn):
        self.db = DAL(**dbconn)
        self.dalobjs = {}

    def loadAllTables(self, objdefs):
        for vs in objdefs:
            self.dalobjs[vs[0]] = DalObj(self.db, vs[0], vs[1:])

    def loadSomeTables(self, objdefs, tablelist):
        for vs in objdefs:
            if vs[0] in tablelist:
                self.dalobjs[vs[0]] = DalObj(self.db, vs[0], vs[1:])

    def makeIndex(self, indexDef):
        for k, v in indexDef.iteritems():
            self.dalobjs[k].makeIndex(indexDef[k])

    def removeIndex(self, indexDef):
        for k, v in indexDef.iteritems():
            self.dalobjs[k].removeIndex(indexDef[k])

    def truncateTables(self, tablelist):
        for tn in tablelist:
            self.dalobjs[tn].truncate()

    def closeDB(self):
        self.db.close()