from pycen import con_bdcen,con_fon as con import geopandas as gpd from sqlalchemy import create_engine, text user_cad = 'cgeier' # utilisateur de connexion à la bdd pwd_cad = 'adm1n*bdCen' # mot de passe de la bdd adr_cad = '91.134.194.221' # adresse ip de la bdd port_cad = '5432' # port de la bdd base_cad = 'cadastre' # nom de la bdd schema_cad = '07_202307' con_cad = create_engine('postgresql+psycopg2://{0}:{1}@{2}:{3}/{4}'.format(user_cad,pwd_cad,adr_cad,port_cad,base_cad), echo=False) 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 TO 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__": grant_all_table(con_cad,schema_cad) # revoke_all_table(con,base_cad)