from pycen import con_bdcen,con_cad,con_fon as con import geopandas as gpd from sqlalchemy import create_engine, text def get_list_table(con,sch): return con.dialect.get_table_names(con,schema=sch) def get_list_view(con,sch): return con.dialect.get_view_names(con,schema=sch) def get_table_pkey(con,sch,tab): return con.dialect.get_foreign_keys(con,tab,sch)['constrained_columns'] def grant_all_table(con,sch): # sch = 'cadastre' sql = 'GRANT USAGE ON SCHEMA "%s" TO grp_consult;'%sch with con.begin() as cnx: cnx.execute(sql) print('GRANT USAGE TO grp_consult FOR SCHEMA "%s"'%(sch)) for tab in get_list_table(con,sch): sql = 'GRANT SELECT ON TABLE "%s".%s TO grp_consult;'%(sch,tab) with con.begin() as cnx: cnx.execute(sql) print('GRANT SELECT TO grp_consult FOR "%s".%s'%(sch,tab)) for tab in get_list_view(con,sch): sql = 'GRANT SELECT ON TABLE "%s".%s TO grp_consult;'%(sch,tab) with con.begin() as cnx: cnx.execute(sql) print('GRANT SELECT TO grp_consult FOR "%s".%s'%(sch,tab)) def revoke_all_table(con,sch): for tab in get_list_table(con,sch): sql = 'REVOKE SELECT ON "%s".%s FROM grp_consult;'%(sch,tab) with con.begin() as cnx: cnx.execute(sql) print('REVOKE SELECT grp_consult FOR "%s".%s'%(sch,tab)) for tab in get_list_view(con,sch): sql = 'REVOKE SELECT ON "%s".%s FROM grp_consult;'%(sch,tab) with con.begin() as cnx: cnx.execute(sql) print('REVOKE SELECT TO grp_consult FOR "%s".%s'%(sch,tab)) if __name__ == "__main__": sch_cad = '42_202407' sch_old = '42_202207' grant_all_table(con_cad,sch_cad) # revoke_all_table(con_cad,sch_old)