from pycen import con url = 'https://wxs.ign.fr/agriculture/geoportail/wfs?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetCapabilities' layer = 'RPG.2020:parcelles_graphiques.title' wpr_name = 'rpgwfs' tab_name = 'rpg2020_parcellaire_graphique' drop_fgn = 'DROP SERVER IF EXISTS %s CASCADE;'%wpr_name fgn_data_wrapper = ''' CREATE SERVER IF NOT EXISTS %s FOREIGN DATA WRAPPER ogr_fdw OPTIONS (datasource 'WFS:%s', format 'WFS') '''%(wpr_name,url) table = ''' DROP FOREIGN TABLE IF EXISTS %s; CREATE FOREIGN TABLE IF NOT EXISTS flux_geo.%s ( id_parcel varchar, surf_parcel float, code_cultu varchar, code_group varchar, culture_d1 varchar, culture_d2 varchar, geom public.geometry(multipolygon, 4326) ) SERVER %s OPTIONS (layer '%s'); '''%(tab_name,tab_name,wpr_name,layer) with con.begin() as cnx: cnx.execute(drop_fgn) with con.begin() as cnx: cnx.execute(fgn_data_wrapper) with con.begin() as cnx: cnx.execute(table) ####### ####### from pycen import con_fon as con from sqlalchemy import text db = 'azalee' host = '91.134.194.221' port = '5432' srv_name = 'fdw_azalee' tab_name = 'inventaire_zh' sch_name = 'inventaires' user = 'cen_admin' pwd = '#CEN38@venir' create_ext = 'CREATE EXTENSION IF NOT EXISTS postgres_fdw;' drop_fgn = 'DROP SERVER IF EXISTS %s CASCADE;'%srv_name fgn_data_wrapper = ''' CREATE SERVER IF NOT EXISTS %s FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname '%s', host '%s', port '%s') '''%(srv_name,db,host,port) fgn_user_wrapper = ''' CREATE USER MAPPING IF NOT EXISTS FOR %s SERVER %s OPTIONS (user '%s', password '%s'); '''%(user,srv_name,user,pwd) table = ''' CREATE FOREIGN TABLE IF NOT EXISTS {sch_name}.{tab_name} ( site_code varchar(10), nom varchar, auteur_site varchar, auteur_geom varchar, auteur_last_maj varchar, date_site date, date_geom date, date_last_maj date, type_milieu varchar, type_site varchar, typo_sdage varchar, rmq_site text, rmq_fct_majeur text, rmq_interet_patri text, rmq_bilan_menace text, rmq_orient_act text, rmq_usage_process text, code_cb varchar, lib_cb text, activ_hum varchar, impact varchar, "position" varchar, rmq_activ_hum text, connexion varchar, subm_orig varchar, subm_freq varchar, subm_etend varchar, fct_bio varchar, fct_hydro varchar, int_patri varchar, "val_socioEco" varchar, crit_delim varchar, crit_def_esp varchar, entree_eau_reg varchar, entree_eau_perm varchar, entree_eau_topo varchar, sortie_eau_reg varchar, sortie_eau_perm varchar, sortie_eau_topo varchar, geom geometry(geometry,2154) ) SERVER {fgn_server} OPTIONS (schema_name 'zones_humides', table_name 'v_zoneshumides'); '''.format( sch_name=sch_name, tab_name=tab_name, fgn_server=srv_name ) with con.begin() as cnx: cnx.execute(create_ext) cnx.execute(drop_fgn) cnx.execute(fgn_data_wrapper) cnx.execute(fgn_user_wrapper) cnx.execute(text(table))