def test03_rnopen(self):
        data = string.split("The quick brown fox jumped over the lazy dog.")
        if verbose:
            print "\nTesting: rnopen"

        f = rnopen(self.filename, 'c')
        for x in range(len(data)):
            f[x + 1] = data[x]

        getTest = (f[1], f[2], f[3])
        if verbose:
            print '%s %s %s' % getTest

        assert getTest[1] == 'quick', 'data mismatch!'

        rv = f.set_location(3)
        if rv != (3, 'brown'):
            self.fail('recno database set_location failed: ' + repr(rv))

        f[25] = 'twenty-five'
        f.close()
        del f

        f = rnopen(self.filename, 'w')
        f[20] = 'twenty'

        def noRec(f):
            rec = f[15]

        self.assertRaises(KeyError, noRec, f)

        def badKey(f):
            rec = f['a string']

        self.assertRaises(TypeError, badKey, f)

        del f[3]

        rec = f.first()
        while rec:
            if verbose:
                print rec
            try:
                rec = f.next()
            except KeyError:
                break

        f.close()
    def poedit_tm_import(self):
        """Attempt to import the Translation Memory used in KBabel."""
        if not hasattr(self, "poedit_database_path"):
            return

        # import each language separately
        for lang in self.poedit_languages:
            strings_db_file = path.join(self.poedit_database_path, lang, 'strings.db')
            translations_db_file = path.join(self.poedit_database_path, lang, 'translations.db')
            if not path.exists(strings_db_file) or not path.exists(translations_db_file):
                continue
            sources = bsddb.hashopen(strings_db_file, 'r')
            targets = bsddb.rnopen(translations_db_file, 'r')
            for source, str_index in sources.iteritems():
                unit = {"context" : ""}
                # the index is a four byte integer encoded as a string
                # was little endian on my machine, not sure if it is universal
                index = struct.unpack('i', str_index)
                target = targets[index[0]][:-1] # null-terminated
                unit["source"] = _prepare_db_string(source)
                unit["target"] = _prepare_db_string(target)
                self.tmdb.add_dict(unit, "en", lang, commit=False)
            self.tmdb.connection.commit()

            logging.debug('%d units migrated from Poedit TM: %s.' % (len(sources), lang))
            sources.close()
            targets.close()
            self.migrated.append(_("Poedit's Translation Memory: %(database_language_code)s") % \
                    {"database_language_code": lang})
示例#3
0
 def __init__(self, name, shelved=False, queue=False):
     global _config;
     self.name = name
     self.shelved = shelved 
     self.queue = queue
     self.condition = Condition()
     self.keys = {}  # key
     self.indexs = {}  # 对tuple【2】的索引
     self.count = 0       
     self.scheme=None
     if shelved:
         # open db   
         path = '%s/%s_%s.bsd' % (_config['root_dir'], _config['server_key'], name)
         if self.queue:
             bsd = bsddb.rnopen(path, 'c')
         else:                
             bsd = bsddb.btopen(path, 'c')
             
         self.db = shelve.BsdDbShelf(bsd)
         # self.db['中文']='test'
         # print self.db.keys()
         # del self.db['中文']
        
     else:
         if self.queue:
             self.db = OrderedDict()  # memery db
         else:
             self.db = {}  # memery db
示例#4
0
    def poedit_tm_import(self):
        """Attempt to import the Translation Memory used in KBabel."""
        if bsddb is None or not hasattr(self, "poedit_database_path"):
            return

        # import each language separately
        for lang in self.poedit_languages:
            strings_db_file = path.join(self.poedit_database_path, lang,
                                        'strings.db')
            translations_db_file = path.join(self.poedit_database_path, lang,
                                             'translations.db')
            if not path.exists(strings_db_file) or not path.exists(
                    translations_db_file):
                continue
            sources = bsddb.hashopen(strings_db_file, 'r')
            targets = bsddb.rnopen(translations_db_file, 'r')
            for source, str_index in sources.iteritems():
                unit = {"context": ""}
                # the index is a four byte integer encoded as a string
                # was little endian on my machine, not sure if it is universal
                index = struct.unpack('i', str_index)
                target = targets[index[0]][:-1]  # null-terminated
                unit["source"] = _prepare_db_string(source)
                unit["target"] = _prepare_db_string(target)
                self.tmdb.add_dict(unit, "en", lang, commit=False)
            self.tmdb.connection.commit()

            logging.debug('%d units migrated from Poedit TM: %s.' %
                          (len(sources), lang))
            sources.close()
            targets.close()
            self.migrated.append(_("Poedit's Translation Memory: %(database_language_code)s") % \
                    {"database_language_code": lang})
    def test03_rnopen(self):
        data = string.split("The quick brown fox jumped over the lazy dog.")
        if verbose:
            print "\nTesting: rnopen"

        f = rnopen(self.filename, 'c')
        for x in range(len(data)):
            f[x+1] = data[x]

        getTest = (f[1], f[2], f[3])
        if verbose:
            print '%s %s %s' % getTest

        assert getTest[1] == 'quick', 'data mismatch!'

        rv = f.set_location(3)
        if rv != (3, 'brown'):
            self.fail('recno database set_location failed: '+repr(rv))

        f[25] = 'twenty-five'
        f.close()
        del f

        f = rnopen(self.filename, 'w')
        f[20] = 'twenty'

        def noRec(f):
            rec = f[15]
        self.assertRaises(KeyError, noRec, f)

        def badKey(f):
            rec = f['a string']
        self.assertRaises(TypeError, badKey, f)

        del f[3]

        rec = f.first()
        while rec:
            if verbose:
                print rec
            try:
                rec = f.next()
            except KeyError:
                break

        f.close()
示例#6
0
 def __init__(self, name, writable = 0, lockfile = None, **args):
     DataSource.__init__(self, name, **args)
     self.db = bsddb.rnopen( args["file"] )
     self.append = self.db.db.append
     self.writable = int(writable)
     if self.writable and lockfile:
         self.lock = Lock(lockfile)
     else:
         self.lock = None
示例#7
0
 def __init__(self, base_name):
     self.content_db_name = base_name + self.__class__.CONTENT_DB + str(uuid.uuid4())
     self.content_db = bsddb.rnopen(self.content_db_name)
     self.id_iter = 1
     self.get_data_iter = 1
     self.parts_iter = 1
示例#8
0
 def __init__(self, filename, default):
     self._db = bsddb.rnopen(filename, 'n')
     self._default = default
示例#9
0
文件: content_db.py 项目: agh-glk/fcs
 def __init__(self, base_name):
     self.content_db_name = base_name
     self.content_db = bsddb.rnopen(self.content_db_name)
     self.id_iter = 1
     self.get_data_iter = 1
     self.parts_iter = 1
示例#10
0
 def __init__(self, filename=None, mode='c'):
     self.store = bsddb.rnopen(filename, mode)
示例#11
0
 def __init__(self, filename=None, mode='c'):
     self.store = bsddb.rnopen(filename, mode)