48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| # -*- coding: utf-8 -*-
 | |
| 
 | |
| import mysql.connector
 | |
| from mysql.connector import errorcode
 | |
| from my_error import MyError
 | |
| from actions import QueryCursor
 | |
| import logging
 | |
| 
 | |
| def results_to_str(desc, results):
 | |
|   ret_str = ''
 | |
|   max_width_list = []
 | |
|   for col_desc in desc:
 | |
|     max_width_list.append(len(str(col_desc[0])))
 | |
|   col_count = len(max_width_list)
 | |
|   for result in results:
 | |
|     if col_count != len(result):
 | |
|       raise MyError('column count is not equal, desc column count: {0}, data column count: {1}'.format(col_count, len(result)))
 | |
|     for i in range(0, col_count):
 | |
|       result_col_width = len(str(result[i]))
 | |
|       if max_width_list[i] < result_col_width:
 | |
|         max_width_list[i] = result_col_width
 | |
|   # 打印列名
 | |
|   for i in range(0, col_count):
 | |
|     if i > 0:
 | |
|       ret_str += '    ' # 空四格
 | |
|     ret_str += str(desc[i][0])
 | |
|     # 补足空白
 | |
|     for j in range(0, max_width_list[i] - len(str(desc[i][0]))):
 | |
|       ret_str += ' '
 | |
|   # 打印数据
 | |
|   for result in results:
 | |
|     ret_str += '\n' # 先换行
 | |
|     for i in range(0, col_count):
 | |
|       if i > 0:
 | |
|         ret_str += '    ' # 空四格
 | |
|       ret_str += str(result[i])
 | |
|       # 补足空白
 | |
|       for j in range(0, max_width_list[i] - len(str(result[i]))):
 | |
|         ret_str += ' '
 | |
|   return ret_str
 | |
| 
 | |
| def query_and_dump_results(query_cur, sql):
 | |
|   (desc, results) = query_cur.exec_query(sql)
 | |
|   result_str = results_to_str(desc, results)
 | |
|   logging.info('dump query results, sql: %s, results:\n%s', sql, result_str)
 | |
| 
 | 
