Импортируйте CSV в Firestore используя Python3 - PullRequest
0 голосов
/ 30 апреля 2020

Я потратил много времени на это и наконец решил опубликовать это здесь. Проблема: у меня есть CSV-файл, который я хочу загрузить в Firestore.

  1. Я конвертирую CSV в json, используя json lib в python3
  2. Загрузите этот json в firestore
from urllib.request import urlopen                 #No issue
import csv                                         #No issue
import json                                        #No issue
import codecs                                      #No issue

db = firestore.Client()                            #No issue
def firestore_upload(event, context):              #No issue
    url = event['mediaLink']                       #No issue
    print(url)                                     #No issue
    csvFile = urlopen(url)                         #No issue
    csvReader = csv.DictReader(codecs.iterdecode(csvFile, 'utf-8'))   #No issue

    for line in csvReader:                         #No issue
        jsonline = json.dumps(line)                #No issue
        print(jsonline)                            #No issue
        db_collection_document = db.collection(u'mlacademyRSA').document(None) #No issue
        print('inserting record')                  #No issue
        db_collection_document.set(jsonline)       #Fails
        db_collection_document.set({"ProductID": "00000001"}) # works fine when i try to put raw json data instead of jsonline

Я не могу добавить переменную jsonline в коллекцию в firestore. Но я могу поместить необработанные json данные / объект в одну и ту же коллекцию.

Короткая строка в моем коде, т.е. db_collection_document.set ({"ProductID": "00000001"}) работает нормально, но не db_collection_document .set (jsonline).

Я проверил достоверность json данных в jsonline, напечатав jsonline и вставив эти выходные данные в различные json валидаторы, которые все говорят, что они в действительном формате json. Пожалуйста, помогите.

Спасибо xytiz

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...