44
55console = Console ()
66
7- def connect_mysql (host , port , user , password , database ):
7+ def connect_mysql (args , host , port , user , password , database ):
88 try :
99 conn = pymysql .connect (
1010 host = host ,
@@ -19,7 +19,7 @@ def connect_mysql(host, port, user, password, database):
1919 except Exception as e :
2020 system .print_error (args , f"Failed to connect to MySQL database at { host } with error: { e } " )
2121
22- def check_data_patterns (conn , patterns , profile_name , database_name , limit_start = 0 , limit_end = 500 , whitelisted_tables = None ):
22+ def check_data_patterns (args , conn , patterns , profile_name , database_name , limit_start = 0 , limit_end = 500 , whitelisted_tables = None , exclude_columns = None ):
2323 cursor = conn .cursor ()
2424
2525 # Get the list of tables to scan
@@ -40,6 +40,8 @@ def check_data_patterns(conn, patterns, profile_name, database_name, limit_start
4040 data_count = 1
4141 for row in cursor .fetchall ():
4242 for column , value in zip (columns , row ):
43+ if exclude_columns and column in exclude_columns :
44+ continue
4345 if value :
4446 value_str = str (value )
4547 matches = system .match_strings (args , value_str )
@@ -84,12 +86,13 @@ def execute(args):
8486 limit_start = config .get ('limit_start' , 0 )
8587 limit_end = config .get ('limit_end' , 500 )
8688 tables = config .get ('tables' , [])
89+ exclude_columns = config .get ('exclude_columns' , [])
8790
8891 if host and user and database :
8992 system .print_info (args , f"Checking MySQL Profile { key } and database { database } " )
90- conn = connect_mysql (host , port , user , password , database )
93+ conn = connect_mysql (args , host , port , user , password , database )
9194 if conn :
92- results += check_data_patterns (conn , patterns , key , database , limit_start = limit_start , limit_end = limit_end , whitelisted_tables = tables )
95+ results += check_data_patterns (args , conn , patterns , key , database , limit_start = limit_start , limit_end = limit_end , whitelisted_tables = tables , exclude_columns = exclude_columns )
9396 conn .close ()
9497 else :
9598 system .print_error (args , f"Incomplete MySQL configuration for key: { key } " )
0 commit comments