Python - Создайте файл Json в облачном хранилище с помощью анализа JSON - PullRequest
0 голосов
/ 20 мая 2019

Я получил данные из базы данных SQL Server и сохраняю данные в переменную в формате json.Я, конечно, хотел бы создать файл json прямо в облачном хранилище, не создавая файл json на моей локальной машине.Это возможно?

Мне удалось создать файл json на моем локальном компьютере, но я бы хотел не учитывать этот шаг, создав объект json в сценарии вместо файла на локальном компьютере, а затем создав файлнепосредственно в облачное хранилище.

#Libraries
import io, json, codecs
import pyodbc
import logging
import os
import cloudstorage as gcs
import gcloud
from gcloud import storage
from google.cloud import bigquery
import pandas as pd
from gcloud.bigquery import SchemaField
import os
from googleapiclient import discovery

#Path variable
try:
    script_path = os.path.dirname(os.path.abspath(__file__)) + "/"
except:
    script_path = "C:\\Users\\userl\\Documents\\auth.json"

#Bigquery Credentials and settings
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = script_path 

db = pyodbc.connect("DRIVER={SQL Server};server=10.0.1.1;database=blablabla;uid=xpto;pwd=xxx")
cursor = db.cursor()
SQLview = 'select * from test'
result = cursor.execute(SQLview)

items = [dict(zip([key[0] for key in cursor.description], row)) for row in result]

json_file = json.dumps(items, ensure_ascii=False).encode('utf-8')


client = storage.Client(project='big-data')
bucket = client.get_bucket('big-data-bkt')
blob = bucket.blob(json_file)
with open('dict_obj.json', 'rb') as f:
    blob.upload_from_file(f)

1 Ответ

0 голосов
/ 21 мая 2019

Возможно, вам придется использовать сторонний плагин для клиентской библиотеки boto, поскольку Cloud Storage также поддерживает потоковую передачу.

Для выполнения потоковой загрузки используйте следующий код:

dst_uri = boto.storage_uri (+ '/' +, 'gs')

dst_uri.new_key (). set_contents_from_stream ()

Пожалуйста, посмотрите на эти ссылки:

https://cloud.google.com/storage/docs/streaming

https://cloud.google.com/storage/docs/boto-plugin#streaming-transfers

...