Enregistrez collectivement des données dans Firestore à l'aide d'un fichier csv en Python

Aperçu

Pensez-y comme ayant fait ce qui suit: Les éléments à vérifier varient en fonction de l'état du contrat, c'est donc facile.

Structure de données

format de fichier csv

Le délimiteur est ",". Parfois, il y a des fichiers csv qui ne suivent pas les règles, alors soyez prudent à ce sujet.

testimage.jpg

Configuration de la base de données

Cette fois, c'est une configuration simple. Je considère unique comme clé primaire et il n'y a pas de duplication.

Configuration de la base de données


unique ---------- item1 
       |           | a : 1
       |           | b : 2
       |            ∟ c : 3
       |
       |--------- item1 
       |           | a : 4
       |           | b : 5
       |            ∟ c : 6
       |
       ∟ --------- item1 
                   | a : 7
                   | b : 8
                    ∟ c : 9

programme

Je fais ce qui suit.

--Lecture des données --firestore initialisation de la variable --Inscrivez-vous un par un dans le firestore

sample.py


import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import csv 

#Lecture des données
def read_data(file_name):
    csv_data = None 
    with open(file_name) as r:
        reader  =csv.reader(r)
        csv_data = [row for row in reader]#Stocké dans une variable sous forme de tableau à deux dimensions
    print('read end')
    
    return csv_data

#processus d'initialisation de Firebase
def firebase_init(api_key):
    api_key = credentials.Certificate(api_key)
    #Il semble que l'état d'initialisation précédent reste, supprimez donc d'abord l'état d'initialisation précédent
    if(len(firebase_admin._apps)):
        firebase_admin.delete_app(firebase_admin.get_app())
    firebase_admin.initialize_app(api_key)
    print("init end")

#Traitement principal / enregistrement des données
def exe(data):
    db = firestore.client()#variable client Firestore
    header = data[0]#Obtenir l'en-tête
    doc_base = db.collection(header[0])#Définir un lieu unique
    print("proc start")
    for i in range(1, len(data)):#Puisque les données proviennent de la deuxième ligne, de 1
        doc_ref = doc_base.document(data[i][0])# a,b,Situé à c
        buf = {}#tampon
        for j in range(1, len(data[i])):
            buf[header[j]] = data[i][j]
        doc_ref.set(buf) #Enregistrer dans Firestore
    print("poc end")

def main():
    file_name = "nom de fichier csv"
    api_key = r'api_key'

    #Lire le fichier
    data = read_data(file_name)

    #initialisation Firebase
    firebase_init(api_key)

    #Traitement principal
    exe(data)

if __name__=="__main__":
    main()

en conclusion

Cette fois, il s'agit d'un enregistrement par lots dans un état propre, mais je pense qu'il est préférable d'acquérir collectivement les données du firestore en cours de route, de vérifier la différence et de mettre à jour le firestore. Puisque le nombre d'appels API est réduit, la charge n'est-elle pas réduite? Je n'ai pas fait de calcul d'essai.

Recommended Posts

Enregistrez collectivement des données dans Firestore à l'aide d'un fichier csv en Python
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
CSV en Python
[Python] Lire un fichier csv avec une grande taille de données à l'aide d'un générateur
Créer un fichier GIF en utilisant Pillow en Python
Lire les données de la table dans un fichier PDF avec Python
J'ai essayé de lire un fichier CSV en utilisant Python
Translocation de fichiers CSV en Python Partie 2: Mesure des performances
Créez un fichier MIDI en Python en utilisant pretty_midi
Évaluation de la vitesse de sortie du fichier CSV en Python
Opérations sur les fichiers en Python
Traitement de fichiers en Python
Nettoyage des données à l'aide de Python
Manipulation de fichiers avec Python
Lire le fichier csv Python
Créer un bot de collecte de données en Python à l'aide de Selenium
Traitement pleine largeur et demi-largeur des données CSV en Python
[AWS IoT] Enregistrer des éléments dans AWS IoT à l'aide du SDK AWS IoT Python
Obtenez des données LEAD à l'aide de l'API REST de Marketo en Python
Créez votre premier fichier GDSII en Python en utilisant gdspy
Traiter les données csv avec python (traitement du comptage à l'aide de pandas)
Gérer les données ambiantes en Python
Afficher les données UTM-30LX en Python
Analyse de données à l'aide de pandas python
Traduit à l'aide de googletrans en Python
Télécharger le fichier csv avec python
Utilisation du mode Python dans le traitement
[Python] Ouvrez le fichier csv dans le dossier spécifié par pandas
Gonfler des données textuelles par retranslation à l'aide de Google Traduction en Python
Sortie de données Excel en écriture séparée à l'aide de Python3 + xlrd + mecab
Résolvez le problème japonais lors de l'utilisation du module CSV en Python.
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Translocation de fichiers CSV avec Python Partie 1
[Python] Chargement de fichiers csv à l'aide de pandas
Programmation GUI en Python avec Appjar
Précautions lors de l'utilisation de Pit avec Python
Acquisition de données à l'aide de l'API googlemap de python
[Python] Ecrire dans un fichier csv avec Python
Obtenir des données de Quandl en Python
Enregistrez le fichier binaire en Python
Création de Linebot et partage de fichiers avec Python
Sortie vers un fichier csv avec Python
Gérez les données au format NetCDF avec Python
Essayez d'utiliser LevelDB avec Python (plyvel)
Créer un fichier binaire en Python
Analyser les données au format CSV à l'aide de SQL
Essayez l'accès au registre PLC en Python
Utilisation de variables globales dans les fonctions python
Lecture et écriture de fichiers CSV Python
Hashing de données en R et Python
[Python] Comment stocker un fichier csv en tant que données de tableau à une dimension
Voyons voir l'utilisation de l'entrée en python
Puissance totale en Python (en utilisant functools)
Extraire le fichier targz en utilisant python
ORC, opérations de fichier Parquet en Python
Reconnaissance de caractères manuscrits à l'aide de KNN en Python
Essayez d'utiliser LeapMotion avec Python
Recherche de priorité de profondeur à l'aide de la pile en Python