#!/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()
Hello Python People,
也许有人可以帮助我解决我的问题。 我想用3个数组创建csv文件。 我认为我必须更改unique_series 去别的东西。 这甚至可以与iam使用的方法一起工作吗(如果我仅以电话号码为例,它就可以正常工作)。 预先感谢您的提示。