Introduction à la persistance des données et au format JSON
Objectifs
Apprendre à utiliser le JSON pour la persistance et la communication des données.
Résumé
Apprenez les bases de la persistance des données en utilisant le format JSON.
Description
Cette leçon aborde la thématique de la persistance des données, en mettant en avant l'importance de bien choisir un format pour organiser et écrire ces données. Parmi les différents formats disponibles, le JSON se distingue par sa simplicité et sa popularité. Importé du monde JavaScript et popularisé par le web, le JSON offre de nombreux avantages pour la sérialisation des données et la communication entre machines, notamment grâce à sa légèreté et sa facilité d'utilisation.
Nous passerons en revue les principaux aspects qui rendent le JSON si utile, tels que sa capacité à mapper facilement avec les structures de données de nombreux langages, notamment Python. Le cours propose également des instructions sur l'utilisation du module JSON de Python, illustrant comment sérialiser et désérialiser des objets, ainsi que les limites du JSON, comme l'absence de support natif pour les objets datetime ou les commentaires.
Enfin, nous discuterons des cas d'utilisation du JSON, soulignant son ubiquité dans les applications web et non-web, et offrirons des exemples pratiques pour sauvegarder et lire des fichiers JSON avec Python.
Les thèmes variés agrémentés d'exemples simples et clairs enrichissent toutes les notions exposées de façon particulièrement pédagogique. 👍
L'approche didactique m'a permis de beaucoup mieux comprendre tout un tas de concepts plus ou moins bien assimilés auparavant avec une vue d'ensemble nettement plus limpide aujourd'hui. 🤓
Merci pour cette belle prestation. 🙏
Je suis vraiment tres satisfait par cette première formation suivie sur Python.
#CODE en python 3.10.0 64 bits (VScode 1.62.3)
import datetime
import asyncio
import aiohttp
import requests
# ----------------------------------------------------------------------------------------------------------------------------
def req_bloquante(num):
print(f"Get {num}")
uid = requests.get("https://httpbin.org/uuid").json()["uuid"]
print(f"Res {num}: {uid}")
def faire_toutes_les_requetes():
for x in range(51):
req_bloquante(x)
print("=====> ### Bloquant : ")
start = datetime.datetime.now()
faire_toutes_les_requetes()
exec_time = (datetime.datetime.now() - start).seconds
print(f"Downloading all take {exec_time} seconds\n")
# ----------------------------------------------------------------------------------------------------------------------------
async def requeteSansBloquer(semaphore, num, session):
print(f"Get {num}")
# await semaphore.acquire() # putting this await semaphore commande the Res is ordering but process very slow ~60 sec
async with session.get("https://httpbin.org/uuid") as response:
uid = (await response.json())["uuid"]
# await asyncio.sleep(delay=3) #delay = number of seconds
# semaphore.release()
print(f"Res {num}: {uid}")
# return uid # ?
async def main():
semaphore = asyncio.Semaphore(value=1)
tasks = []
async with aiohttp.ClientSession(
loop=loop, connector=aiohttp.TCPConnector(ssl=False)
) as session:
for x in range(51):
tasks.append(requeteSansBloquer(semaphore, x, session))
await asyncio.gather(*tasks)
print("This is after the loop...")
if __name__ == "__main__":
print("=====> ### Non Bloquant : ")
start = datetime.datetime.now()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
exec_time = (datetime.datetime.now() - start).microseconds
print(f"Downloading all take {exec_time} micro seconds\n")