def select_objects_in_folder_or_date_modified(cnn, update_from_date): git_dir = os.path.join(config.git_folder, cnn.dsn) folder_objects_df = dirs.objects_in_folder(git_dir) s = select_types_in_folder_or_date_modified df = pd.concat([s(cnn, t, folder_objects_df, update_from_date) for t in texts_sql.keys()]) # df = df[df["TEXT"].map(lambda a: a.strip() != '')] # Удалим строки с пустыми TEXT return df
def test_writing_methods(self): def write_object(project_folder, class_id, short_name, extention, text): if text: dirname = os.path.join(project_folder, class_id) extention = ('.' + (extention or '')).rstrip('.') filename = os.path.join(dirname, short_name + extention + '.sql') if not os.path.exists(dirname): os.makedirs(dirname) with open(filename, "wb+") as f: part = re.sub(r'[ \t\r\f\v]*\n', '\n', text, flags=re.M) f.write(part.replace('\n', '\r\n').encode()) os.environ[ "ORACLE_HOME"] = "C:/app/BryzzhinIS/product/11.2.0/client_1/" os.environ['NLS_LANG'] = '.AL32UTF8' db_cnn_str = "ibs/HtuRhtl@midabs" cnn = cx_Oracle.connect(db_cnn_str) project_folder_path = r"C:\Users\BryzzhinIS\Documents\Хранилища\sync_script\dbs\day" folder_objects_df = dirs.objects_in_folder(project_folder_path) method_df = select_types_in_folder_or_date_modified( cnn, 'METHOD', folder_objects_df, 1, 'd') method_df = method_df[method_df["TEXT"].map( lambda a: a.strip() != '')] # Удалим строки с пустыми TEXT i = 0 for idx, row in method_df.iterrows(): print(row.tolist()) write_object(project_folder_path, row["CLASS_ID"], row["SHORT_NAME"], row["EXTENTION"], row["TEXT"])
def test_iterate_over_methods_in_folder(self): df = dirs.objects_in_folder( r"C:\Users\BryzzhinIS\Documents\Хранилища\sync_script\dbs\day") df = df[df["TYPE"] == 'METHOD'] df.SHORT_NAME = df.SHORT_NAME.apply(lambda a: "'%s'" % a.upper()) group = df.groupby(["CLASS_ID"]) condition = "CLASS_ID = '%s' and SHORT_NAME in (%s)" where_clause = "\n or ".join(condition % (class_id, ",".join(rows["SHORT_NAME"])) for class_id, rows in group) print(where_clause)
def test_iterate_over_views_in_folder(self): def where_clause_by_name(objs): objs["SHORT_NAME"] = objs["SHORT_NAME"].map( lambda a: "'%s'" % a.upper()) group = objs.groupby(["CLASS_ID"]) condition = "CLASS_ID = '%s' and SHORT_NAME in (%s)" where_clause = "\n or ".join( condition % (class_id, ",".join(rows["SHORT_NAME"])) for class_id, rows in group) return where_clause objs = dirs.objects_in_folder( r"C:\Users\BryzzhinIS\Documents\Хранилища\sync_script\dbs\day") # views = objs[objs["TYPE"] == 'VIEW'] # print(where_clause_by_name(objs[objs["TYPE"] == 'VIEW'].copy())) print(where_clause_by_name(objs[objs["TYPE"] == 'VIEW'].copy()))
def test_writing_views(self): def write_object(project_folder, class_id, short_name, extention, text): if text: dirname = os.path.join(project_folder, class_id) extention = ('.' + (extention or '')).rstrip('.') filename = os.path.join(dirname, short_name + extention + '.sql') if not os.path.exists(dirname): os.makedirs(dirname) with open(filename, "wb+") as f: part = re.sub(r'[ \t\r\f\v]*\n', '\n', text, flags=re.M) f.write(part.replace('\n', '\r\n').encode()) os.environ[ "ORACLE_HOME"] = "C:/app/BryzzhinIS/product/11.2.0/client_1/" os.environ['NLS_LANG'] = '.AL32UTF8' db_cnn_str = "ibs/HtuRhtl@midabs" cnn = cx_Oracle.connect(db_cnn_str) project_folder_path = r"C:\Users\BryzzhinIS\Documents\Хранилища\sync_script\dbs\day" folder_objects_df = dirs.objects_in_folder(project_folder_path) view_df = select_types_in_folder_or_date_modified( cnn, 'VIEW', folder_objects_df, 1, 'd') nstr = lambda a: a or '' view_df["TEXT"] = view_df.CONDITION.map(nstr) + view_df.ORDER_BY.map( nstr) + view_df.GROUP_BY.map(nstr) view_df = view_df.drop(["CONDITION", "ORDER_BY", "GROUP_BY"], axis=1) # row = view_df[view_df["SHORT_NAME"] == 'VW_CRIT_RKO_CUR_EXT'].iloc[0] # write_object(project_folder_path, row["CLASS_ID"], row["SHORT_NAME"], row["EXTENTION"], row["TEXT"]) # write_object(project_folder_path, row["CLASS_ID"], row["SHORT_NAME"], 'locals', row["TEXT"]) for idx, row in view_df.iterrows(): write_object(project_folder_path, row["CLASS_ID"], row["SHORT_NAME"], row["EXTENTION"], row["TEXT"])
def test_dual(self): df = dirs.objects_in_folder( r"C:\Users\BryzzhinIS\Documents\Хранилища\sync_script\dbs\day") self.assertEqual(len(df[df.isnull().any(axis=1)]), 0)
def test_dual(self): print( dirs.objects_in_folder( r"C:\Users\BryzzhinIS\Documents\Хранилища\sync_script\dbs\day") )