| @@ 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 | ||
| @@ 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 | ||