#!/usr/bin/env python
from pandas import DataFrame, Series
from simple_salesforce import Salesforce
from config import *
qry_result = sf.query("SELECT Phone, Name, Account.Name FROM Contact")
logging.debug('SF QueryResult TotalSize {0}'.format(qry_result['totalSize']))
df = DataFrame(qry_result['records'])
is_done = qry_result['done'];
while not is_done:
try:
qry_result = sf.query_more(qry_result['nextRecordsUrl'], True)
df = df.append(DataFrame(qry_result['records']))
if qry_result['done']:
is_done = True;
logging.debug('SF completed')
except NameError as e:
logging.error('SOQL failed', e)
SystemExit(17)
df = df.drop('attributes', axis=1)
return df
def extract_numbers_and_canonicalize(df):
phone_numbers = []
account_numbers = []
name = []
for row in df.itertuples():
print(row)
logging.info(row)
phone = extract(row, 'Phone' + ';')
if phone:
phone_numbers.append(phone)
account_numbers = extract(row, 'account_numbers' + ';')
if account_numbers:
account_numbers.append(account_numbers)
name = extract(row, 'name')
if name:
name.append(name)
header = [phone_numbers, account_numbers, name]
series = Series(data=header)
unique_series = series.unique()
return DataFrame(data=unique_series, columns=['numbers'';''names' ';' 'accountnames'])
def extract(tuple, column):
if not hasattr(tuple, column):
return None
value = getattr(tuple, column)
if not value:
return None
return canonicalize(value)
def query_contacts_and_write_csv():
contacts = query_sf_contacts()
numbers = extract_numbers_and_canonicalize(contacts)
DataFrame.to_csv(numbers, encoding='utf-8', path_or_buf=CSV_RESULT_FILE, index=False)
query_contacts_and_write_csv()
Здравствуйте, Python People,
Может быть, кто-то может помочь мне с моей проблемой.Я хотел бы создать CSV-файл с 3 массивами.Я предполагаю, что я должен изменить unique_series на что-то другое.Работает ли это даже с подходом, который я использую (если я возьму только номера телефонов, например, он работает просто отлично)Заранее спасибо за советы.