我正在尝试使用以下命令从 salesforce 查询信息simple_salesforce
包在Python中。
问题在于,它将作为父子关系一部分的字段嵌套到有序字典中的有序字典中
我想..从 Opportunity 对象中找到 id 以及与该记录关联的 accountid。
SOQL 查询可能看起来像..
query = "select id, account.id from opportunity where closedate = last_n_days:5"
在 SOQL(Salesforce 对象查询语言)中,点表示数据库中的父子关系。因此,我尝试从机会对象中获取 id,然后从该记录上的帐户对象中获取相关 id。
由于某种原因,Id 很好,但是 account.id 嵌套在有序字典中的有序字典中:
q = sf.query_all(query)
这会拉回一个有序的字典..
OrderedDict([('totalSize', 455),
('done', True),
('records',
[OrderedDict([('attributes',
OrderedDict([('type', 'Opportunity'),
('url',
我会拉records
的一部分ordereddict
创建一个df
df = pd.DataFrame(q['records'])
这给了我 3 列,一个名为的有序字典'attributes'
, Id
另一个有序字典称为'Account'
。我正在寻找一种方法来提取('BillingCountry', 'United States')
嵌套有序字典中的一部分'Account'
[OrderedDict([('attributes',
OrderedDict([('type', 'Opportunity'),
('url',
'/services/data/v34.0/sobjects/Opportunity/0061B003451RhZgiHHF')])),
('Id', '0061B003451RhZgiHHF'),
('Account',
OrderedDict([('attributes',
OrderedDict([('type', 'Account'),
('url',
'/services/data/v34.0/sobjects/Account/001304300MviPPF3Z')])),
('BillingCountry', 'United States')]))])
编辑:澄清我在寻找什么。
我想以一个数据框结束,其中每个查询字段都有一列。
当我把'records'
使用以下方式将其分割成 DataFramedf = pd.DataFrame(sf.query_all(query)['records'])
它给了我:
attributes Id Account
OrderedDict([('type', 'Opportunity'), ('url', '/services/data/v34.0/sobjects/Opportunity/0061B003451RhZgiHHF')]) 0061B003451RhZgiHHF OrderedDict([('attributes', OrderedDict([('type', 'Account'), ('url', '/services/data/v34.0/sobjects/Account/0013000000MvkRQQAZ')])), ('BillingCountry', 'United States')])
OrderedDict([('type', 'Opportunity'), ('url', '/services/data/v34.0/sobjects/Opportunity/0061B00001Pa52QQAR')]) 0061B00001Pa52QQAR OrderedDict([('attributes', OrderedDict([('type', 'Account'), ('url', '/services/data/v34.0/sobjects/Account/0011300001vQPxqAAG')])), ('BillingCountry', 'United States')])
OrderedDict([('type', 'Opportunity'), ('url', '/services/data/v34.0/sobjects/Opportunity/0061B00001TRu5mQAD')]) 0061B00001TRu5mQAD OrderedDict([('attributes', OrderedDict([('type', 'Account'), ('url', '/services/data/v34.0/sobjects/Account/0011300001rfRTrAAE')])), ('BillingCountry', 'United States')])
当我删除后'attributes'
我希望输出的列是
Id BillingCountry
0061B003451RhZgiHHF 'United States'
0061B00001Pa52QQAR 'United States'
0061B00001TRu5mQAD 'United States'