(python) Перебор списка таблиц Salesforce для извлечения и загрузки в AWS S3

#python #pandas #amazon-s3

#python #pandas #amazon-s3

Вопрос:

Всем доброго утра!

Я пытаюсь выполнить обычную итерацию по списку таблиц. Приведенный ниже код работает с одной таблицей «контакт». Я хочу перебрать все таблицы, перечисленные в моем tablelist.csv. Я выделил жирным шрифтом выбранные ниже элементы, которые необходимо будет динамически изменять в коде. На данный момент мой мозг изрядно перегрет от работы в течение двух ночей, и я полностью готов к тому, что Интернет скажет мне, что это во второй главе введения в Python, но я мог бы воспользоваться помощью, чтобы преодолеть это препятствие.

 import pandas as pd
import boto3
from simple_salesforce import salesforce

li = pd.read_csv('tablelist.csv', header=none)
desc = sf.**Contact**.describe()  
field_names = [field['name'] for field in desc['fields']]
soql = "SELECT {} FROM **Contact**".format(','.join(field_names))
results = sf.query_all(soql)
sf_df = pd.DataFrame(results['records']).drop(columns='attributes')
sf_df.to_csv('**contact**.csv')
s3 = boto3.client('s3')
s3.upload_file('contact.csv', 'mybucket', 'Ops/20201027/contact.csv')
  

Ответ №1:

Было бы полезно, если бы вы могли предоставить образец файла tablelist, но вот попытка … вам действительно просто нужно получить список таблиц и просмотреть его.

 #assuming table is a column somewhere in the file
df_tablelist = pd.read_csv('tablelist.csv', header=none)
for Contact in df_tablelist['yourtablecolumttoiterateon'].tolist():
    desc = sf.**Contact**.describe()  
    field_names = [field['name'] for field in desc['fields']]
    soql = "SELECT {} FROM {}".format(','.join(field_names), Contact)
    results = sf.query_all(soql)
    sf_df = pd.DataFrame(results['records']).drop(columns='attributes')
    sf_df.to_csv(Contact   '.csv')
    s3 = boto3.client('s3')
    s3.upload_file(Contact   '.csv', 'mybucket', 'Ops/20201027/'   Contact   '.csv')