Untitled
unknown
plain_text
2 years ago
2.1 kB
13
Indexable
primary_query=f"SELECT * FROM {schema_ppm}.etl_ppm_replication_master WHERE eprm_catalog='SC' AND eprm_enabled_flg='Y'"
primary_df=pd_read_sql(primary_query,con=connection_ppm)
for index, row in primary_df.iterrows():
table_name = row['eprm_table_name']
source_query = f"SELECT * FROM {schema_source}.{table_name}"
source_df = pd.read_sql(source_query, connection_source)
target_query = f"SELECT * FROM {schema_ext}.{table_name}"
target_df = pd.read_sql(target_query, connection_ext)
if len(source_df) != len(target_df):
print(f"Error: {table_name} in Source and Target databases have different row counts.")
else:
for index, (source_row, target_row) in enumerate(zip(source_df.iterrows(), target_df.iterrows())):
source_row_data = source_row[1]
target_row_data = target_row[1]
row_number = index + 1
if not source_row_data.equals(target_row_data):
# Generate an update query dynamically
update_query = f"UPDATE {table_name} SET "
column_updates = []
for column_name, source_val in source_row_data.items():
target_val = target_row_data[column_name]
if source_val != target_val:
column_updates.append(f"{column_name} = '{source_val}'")
update_query += ", ".join(column_updates)
update_query=f" where rownum = {row_number}"
print(update_query)
cursor_ext.execute(update_query)
in the above python code iam comapring the differences and in below line iam iterating again again for all rows its there any shortcut to check all once at a time ca you optimize them
for index, (source_row, target_row) in enumerate(zip(source_df.iterrows(), target_df.iterrows())):Editor is loading...