def exe(self): out_format, fold, export_type, printer = self.out_format, self.fold, self.export_type, self.printer server = self.get_server() dc = server.db_conf if dc.server_type is DatabaseType.MONGO: printer.print_error_msg("Not Support MongoDB!") self.write_error_history("Not Support MongoDB") return conn = server.get_connection() try: tab_list = self._exe_query( server.get_list_tables_sql(server.db_conf.database), conn)[1] split_line, print_template = '\n---\n' if out_format == 'markdown' else '\n', get_print_template( out_format) attach_sql = export_type == 'ddl' for tab in tab_list[0]: if export_type in {'all', 'ddl'}: printer.output( print_template.format(f'Table structure for {tab[0]}')) self._print_table_schema( conn, Query(dc.server_type, dc.database, None, tab[0], fold), attach_sql) printer.output(split_line) if export_type in {'all', 'data'}: q = Query(dc.server_type, dc.database, server.get_scan_table_sql(tab[0]), tab[0], fold) printer.output( print_template.format(f'Dumping data for {tab[0]}'), end='') if dc.server_type is DatabaseType.SQL_SERVER and out_format == 'sql': headers, results = self._exe_query( f'sp_columns [{tab[0]}];{q.sql}', conn) set_identity_insert = len([ 1 for row in results[0] if row[5].endswith("identity") ]) > 0 if set_identity_insert: printer.output( f'SET IDENTITY_INSERT [{tab[0]}] ON;') self.print_result_set( self._get_table_head_from_description(headers[1]), results[1], q) if set_identity_insert: printer.output( f'SET IDENTITY_INSERT [{tab[0]}] OFF;') else: self._run_sql(q, conn) printer.output(split_line) except BaseException as be: self.write_error_history(export_type) printer.print_error_msg(be) finally: conn.close()
def exe(self): server = self.get_server() dc, conn = server.db_conf, server.get_connection() self._run_sql( Query(dc.server_type, dc.database, self.params['option_val'], None, self.fold, self.columns, self.limit_rows, self.human), conn) conn.close()
def exe(self): path = self.params['option_val'] success_num, fail_num = 0, 0 try: if os.path.exists(path): server = self.get_server() dc = server.db_conf if dc.server_type is DatabaseType.MONGO: self.printer.print_error_msg("Not Support MongoDB!") self.write_error_history('Not Support MongoDB') return conn = server.get_connection() cur = conn.cursor() with open(path, mode='r', encoding='UTF8') as sql_file: sql = '' for line in sql_file.readlines(): t_sql = line.strip() if not t_sql or t_sql.startswith('--'): continue elif t_sql.lower().startswith(('insert', 'create', 'update', 'select', 'delete', 'alter', 'set', 'drop', 'go', 'use', 'if', 'with', 'show', 'desc', 'grant', 'exec')): if sql == '': sql = line continue success, fail = self.exe_sql(cur, Query(dc.server_type, None, sql, fold=False)) success_num += success fail_num += fail sql = line else: sql += line if sql != '': success, fail = self.exe_sql(cur, Query(dc.server_type, None, sql, fold=False)) success_num += success fail_num += fail if success_num > 0: conn.commit() cur.close() conn.close() self.printer.print_info_msg(f'end load. {success_num} successfully executed, {fail_num} failed.') self.write_ok_history(path) else: self.printer.print_error_msg(f"path:{path} not exist!") self.write_error_history(path) except Exception as be: self.printer.print_error_msg(be) self.write_error_history(path)
def exe(self): tab_name, server = self.params['option_val'], self.get_server() conn, dc = server.get_connection(), server.db_conf self._print_table_schema( conn, Query(dc.server_type, dc.database, None, tab_name, self.fold, self.columns, self.limit_rows, self.human)) conn.close()
def exe(self): server = self.get_server() dc = server.db_conf show_obj = self.params.get('option_val', 'table') show_obj = show_obj.lower() if show_obj.lower() else 'table' sql = self.get_sql(server, show_obj) if sql is None: self.printer.print_error_msg(f'Invalid Param "{show_obj}"!') self.write_error_history(show_obj) return conn = server.get_connection() if dc.server_type is DatabaseType.MONGO: db = conn[dc.database] header, res = eval(sql) self.print_result_set(header, res, Query(dc.server_type, dc.database, sql, None, False)) else: self._run_sql(Query(dc.server_type, dc.database, sql, fold=False), conn) conn.close()
def exe(self): print_content = [] db_conf = self._read_info()['conf'] head = ['env', 'conf', 'servertype', 'host', 'port', 'database', 'user', 'password', 'charset', 'autocommit'] for env in db_conf.keys(): for conf in db_conf[env].keys(): new_row = [env, conf] new_row.extend([db_conf[env][conf].get(key, '') for key in head[2:]]) print_content.append(new_row) header, res = self.before_print(head, print_content, Query(None, None, None, fold=self.fold)) pu.print_table(header, res, self.params['print_conf'], self.printer) self.write_ok_history('')
def exe(self): try: res = [ list( map(lambda cell: cell.replace("\n", " "), hs.split('\0\0'))) for hs in self._read_history() ] self.print_result_set(['time', 'option', 'value', 'stat'], res, Query(None, None, None, fold=self.fold)) self.__write_history(self.out_format, Stat.OK) except Exception as e: self.__write_history(self.out_format, Stat.ERROR) self.printer.print_error_msg(e)
def exe(self): server = self.get_server() dc = server.db_conf if dc.server_type is DatabaseType.MONGO: self.printer.print_error_msg("Not Support MongoDB!") self.write_error_history("Not Support MongoDB") return conn = server.get_connection() val = input('db>').strip() while val not in {'quit', '!q', 'exit'}: if not (val == '' or val.strip() == ''): self._run_sql(Query(dc.server_type, None, val), conn) val = input('db>') conn.close() self.printer.output('Bye')
def exe(self): tab_name, server = self.params['option_val'], self.get_server() sql = server.get_count_table_sql(tab_name) dc, conn = server.db_conf, server.get_connection() self._run_sql(Query(dc.server_type, dc.database, sql, tab_name, False), conn) conn.close()