Code Duplication    Length = 40-41 lines in 2 locations

pyspider/database/sqlite/sqlitebase.py 1 location

@@ 25-65 (lines=41) @@
22
        return self.conn.cursor()
23
24
25
class SplitTableMixin(object):
26
    UPDATE_PROJECTS_TIME = 10 * 60
27
28
    def _tablename(self, project):
29
        if self.__tablename__:
30
            return '%s_%s' % (self.__tablename__, project)
31
        else:
32
            return project
33
34
    @property
35
    def projects(self):
36
        if time.time() - getattr(self, '_last_update_projects', 0) \
37
                > self.UPDATE_PROJECTS_TIME:
38
            self._list_project()
39
        return self._projects
40
41
    @projects.setter
42
    def projects(self, value):
43
        self._projects = value
44
45
    def _list_project(self):
46
        self._last_update_projects = time.time()
47
        self.projects = set()
48
        if self.__tablename__:
49
            prefix = '%s_' % self.__tablename__
50
        else:
51
            prefix = ''
52
        for project, in self._select('sqlite_master', what='name',
53
                                     where='type = "table"'):
54
            if project.startswith(prefix):
55
                project = project[len(prefix):]
56
                self.projects.add(project)
57
58
    def drop(self, project):
59
        if project not in self.projects:
60
            self._list_project()
61
        if project not in self.projects:
62
            return
63
        tablename = self._tablename(project)
64
        self._execute("DROP TABLE %s" % self.escape(tablename))
65
        self._list_project()
66

pyspider/database/mysql/mysqlbase.py 1 location

@@ 27-66 (lines=40) @@
24
            self.conn.ping(reconnect=True)
25
            self.conn.database = self.database_name
26
            return self.conn.cursor()
27
28
29
class SplitTableMixin(object):
30
    UPDATE_PROJECTS_TIME = 10 * 60
31
32
    def _tablename(self, project):
33
        if self.__tablename__:
34
            return '%s_%s' % (self.__tablename__, project)
35
        else:
36
            return project
37
38
    @property
39
    def projects(self):
40
        if time.time() - getattr(self, '_last_update_projects', 0) \
41
                > self.UPDATE_PROJECTS_TIME:
42
            self._list_project()
43
        return self._projects
44
45
    @projects.setter
46
    def projects(self, value):
47
        self._projects = value
48
49
    def _list_project(self):
50
        self._last_update_projects = time.time()
51
        self.projects = set()
52
        if self.__tablename__:
53
            prefix = '%s_' % self.__tablename__
54
        else:
55
            prefix = ''
56
        for project, in self._execute('show tables;'):
57
            if project.startswith(prefix):
58
                project = project[len(prefix):]
59
                self.projects.add(project)
60
61
    def drop(self, project):
62
        if project not in self.projects:
63
            self._list_project()
64
        if project not in self.projects:
65
            return
66
        tablename = self._tablename(project)
67
        self._execute("DROP TABLE %s" % self.escape(tablename))
68
        self._list_project()
69