def _predo(root, database): """对原始数据库做特殊处理""" prefile = os.path.join(root, 'pre.sql') if os.path.exists(prefile): mysqlload(prefile, database.get('host'), database.get('port'), database.get('user'), database.get('passwd'), database.get('schema'), character_set=None, extargs=None, logfile=None, callable=safe_fork, timeout=30)
def execute(self, timeline, root, database): LOG.debug('Try init databases') initfile = os.path.join(root, 'init.sql') logfile = os.path.join(root, 'initdb.err.%d.log' % timeline) mysqlload(initfile, database.get('host'), database.get('port'), database.get('user'), database.get('passwd'), database.get('schema'), character_set=None, extargs=None, logfile=logfile, callable=safe_fork, timeout=15) LOG.debug('Init databases success, try call pre.sql') os.remove(logfile) self._predo(root, database)
def execute_sql_from_file(self, sql_file, logfile=None, timeout=None): database = self.database func = None if systemutils.LINUX: func = functools.partial(utils.safe_fork, user=self.middleware.entity_user, group=self.middleware.entity_group) self.executed = 1 mysqlload(loadfile=sql_file, host=database.host, port=database.port, user=database.user, passwd=database.passwd, schema=database.schema, character_set=database.character_set, extargs=None, logfile=logfile, callable=func, timeout=timeout)
def _postdo(root, database): """合并完成后特殊处理""" postfile = os.path.join(root, 'post.sql') if not os.path.exists(postfile): with open(postfile, 'w') as f: f.write('delete from var_player where `key` = 100;\n') f.write('update guilds set is_change_name = 0;\n') if os.path.exists(postfile): mysqlload(postfile, database.get('host'), database.get('port'), database.get('user'), database.get('passwd'), database.get('schema'), character_set=None, extargs=None, logfile=None, callable=safe_fork, timeout=30)
def execute(self, timeline, root, database, timeout): if self.stoper[0]: raise exceptions.MergeException('Stop mark is true') _file = os.path.join(root, sqlfile(self.entity)) logfile = os.path.join( root, 'insert-%d.err.%d.log' % (self.entity, timeline)) LOG.info('Insert database of entity %d, sql file %s' % (self.entity, _file)) mysqlload(_file, database.get('host'), database.get('port'), database.get('user'), database.get('passwd'), database.get('schema'), character_set=None, extargs=None, logfile=logfile, callable=safe_fork, timeout=timeout) LOG.info('Insert database of entity %d success' % self.entity) os.remove(logfile)