def test_execute_finish(self, _query): sql = 'update user set id=100' row = [ 1, 'CHECKED', 0, 'Execute Successfully', 'None', 'use archery', 0, "'0_0_0'", 'None', '0', '' ] column_list = [ 'ID', 'stage', 'errlevel', 'stagestatus', 'errormessage', 'SQL', 'Affected_rows', 'sequence', 'backup_dbname', 'execute_time', 'sqlsha1' ] _query.return_value = ResultSet(full_sql=sql, rows=[row], column_list=column_list) new_engine = InceptionEngine() execute_result = new_engine.execute(workflow=self.wf) self.assertIsInstance(execute_result, ReviewSet)
def _table_ref(sql_content, instance, db_name): """ 解析语法树,获取语句涉及的表,用于查询权限限制 :param sql_content: :param instance: :param db_name: :return: """ inception_engine = InceptionEngine() query_tree = inception_engine.query_print(instance=instance, db_name=db_name, sql=sql_content) table_ref = query_tree.get('table_ref', []) db_list = [table_info['db'] for table_info in table_ref] table_list = [table_info['table'] for table_info in table_ref] # 异常解析的情形 if '' in db_list or '*' in table_list: raise RuntimeError('Inception Error: 存在空数据库表信息') if not (db_list or table_list): raise RuntimeError('Inception Error: 未解析到任何库表信息') return table_ref
def test_get_backup_connection(self, _connect): new_engine = InceptionEngine() new_engine.get_backup_connection() _connect.assert_called_once()
def test_query_not_limit(self, _conn, _cursor, _execute): _conn.return_value.cursor.return_value.fetchall.return_value = [(1,)] new_engine = InceptionEngine(instance=self.ins) query_result = new_engine.query(db_name=0, sql='select 1', limit_num=0) self.assertIsInstance(query_result, ResultSet)