68 lines
1.7 KiB
Python
68 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: UTF-8 -*-
|
|
|
|
from pycen import con_fon as con
|
|
from sqlalchemy import text
|
|
db = 'bd_cen'
|
|
host = '91.134.194.221'
|
|
port = '5432'
|
|
srv_name = 'fdw_bd-cen-38'
|
|
tab_name = 'cr_line_saisie_travaux'
|
|
sch_name = 'travaux'
|
|
view_name = 'travaux_ligne'
|
|
user = 'cen_admin'
|
|
pwd = '#CEN38@venir'
|
|
|
|
dict_cols = {
|
|
'gid': 'serial4',
|
|
'geom': 'public.geometry(linestring, 2154)',
|
|
'id_site': 'varchar',
|
|
'annee_trav': 'int4',
|
|
'id_gestion': 'int4',
|
|
'id_presta': 'int4',
|
|
'etat_trav': 'varchar',
|
|
'nom_presta': 'varchar',
|
|
'date_debut': 'date',
|
|
'duree_trav': 'float8',
|
|
'nb_etp': 'float8',
|
|
'nb_balle': 'int4',
|
|
'val_mat': 'int4',
|
|
'legende': 'varchar',
|
|
'rmq': 'varchar',
|
|
'prestation': 'int4',
|
|
'long_m': 'float8',
|
|
'crea_date': 'date',
|
|
'date_update': 'date',
|
|
'date_fin': 'date',
|
|
}
|
|
|
|
col_table = ','.join([' '.join([key,val]) for key, val in dict_cols.items()])
|
|
table = '''
|
|
DROP FOREIGN TABLE IF EXISTS {sch_name}.{tab_name} CASCADE;
|
|
CREATE FOREIGN TABLE IF NOT EXISTS {sch_name}.{tab_name} (
|
|
{columns}
|
|
)
|
|
SERVER "{fgn_server}"
|
|
OPTIONS (schema_name '{sch_name}', table_name '{tab_name}');
|
|
'''.format(
|
|
sch_name=sch_name, tab_name=tab_name, columns=col_table, fgn_server=srv_name
|
|
)
|
|
|
|
col_view = ','.join(dict_cols.keys())
|
|
view = '''
|
|
CREATE OR REPLACE VIEW {sch_name}.{v_name} AS
|
|
SELECT
|
|
{columns}
|
|
FROM {sch_name}.{tab_name};
|
|
|
|
ALTER TABLE {sch_name}.{v_name} OWNER TO cen_admin;
|
|
GRANT ALL ON TABLE {sch_name}.{v_name} TO cen_admin;
|
|
GRANT SELECT ON TABLE {sch_name}.{v_name} TO grp_sig;
|
|
GRANT SELECT ON TABLE {sch_name}.{v_name} TO cen_user;
|
|
'''.format(
|
|
sch_name=sch_name, tab_name=tab_name, v_name=view_name, columns=col_view
|
|
)
|
|
|
|
with con.begin() as cnx:
|
|
cnx.execute(text(table))
|
|
cnx.execute(text(view)) |