예제 #1
0
def main():
    start_time = time.time()
    i = 0
    # récupération de tous les json du dossier folder
    f_test = glob.glob(folder+'*.json')
    nb_f = f_test.__len__()
    db = postgresql.open(IRI + database_name)
    # Création de la table 'velov'
    utils_Json_Postgres.create_table(db, sql_table, table_name, database_name)
    # Si la table existe déjà, la connexion est fermée automatiquement
    # construction de la liste de valeurs à insérer dans l'ordre annoncée des VALUES
    while i<nb_f:
        print("******* fichier %s" %i)
        # si la connexion est fermée -> la réouvrir
        if db.closed:
            db = postgresql.open(IRI + database_name)
        # chargement et modification du json pour préparation à l'insertion en bdd
        data, d = utils_Json_Postgres.data_create(f_test[i], False, set_int, set_float, set_date)
        # Déclaration  et préparation de la requête d'insertion
        sql_insert = utils_Json_Postgres.cons_insert(table_name, data)
        statement = None
        try:
            statement = db.prepare(sql_insert)
        except exceptions.DuplicateTableError:
            print("Une exception est soulevée!!! Erreur sur la requête d'insertion")
        # insertion des lignes
        utils_Json_Postgres.insertion(data, d, statement)
        i += 1
    tmp = time.time() - start_time
    tmp = str(datetime.timedelta(seconds=tmp))
    print(" Tps execution --- %s  ---" % tmp)
def dl_insert(param_results, param_s_f, param_outpath, param_format_f, param_IRI, param_database_name, param_table_name):
    start_time = time.time()
    db = postgresql.open(param_IRI + param_database_name)
    nb_files = 0
    #récupération des fichiers
    items = param_results.get('files', [])
    if not items:
        print('No files found.')
    else:
        print('Files:')
        for item in items:
            print('{0} ({1})'.format(item['name'], item['id']))
            file_id = item['id']
            file_name = item['name']
            # filtrage sur le 26/01
            if file_name[0:10] == '26/01/2016':
                nb_files += 1
                print("*******Chargement et traitement du fichier******", file_name)
                file_name = file_name.replace("/", "_").replace(" ", "_").replace(":", "_")
                # chargement get_media
                request = param_s_f.get_media(fileId=file_id)
                outfilename = param_outpath+file_name+"."+param_format_f
                outfile = io.FileIO(outfilename, mode='w+')
                downloader = googleapiclient.http.MediaIoBaseDownload(outfile, request)
                done = False
                while done is False:
                    status, done = downloader.next_chunk()
                #vérification de l'ouverture de la connexion à la BDD
                if db.closed:
                    print("!!Connexion réouverte!!")
                    db = postgresql.open(param_IRI + param_database_name)
                data, d = utils_Json_Postgres.data_create(outfilename, False, set_int, set_float, set_date)
                # Déclaration  et préparation de la requête d'insertion
                sql_insert = utils_Json_Postgres.cons_insert(param_table_name, data)
                statement = None
                try:
                    statement = db.prepare(sql_insert)
                except exceptions.DuplicateTableError:
                    print("Une exception est soulevée!!! Erreur sur la requête d'insertion")
                utils_Json_Postgres.insertion(data, d, statement)
    print("Tps execution pour le chargement et l'insertion des %s fichiers" % nb_files)
    print(" --- %s seconds ---" % (time.time() - start_time))
    return nb_files