我使用名为Simple_Salesforce的python库来查询在线CRM数据库。我将查询字符串和查询结果存储在字典中。 Query_String和Results对每个表都是唯一的。我正在运行循环的一些问题,因为每个表中的第一个键是唯一的。如何将其合并到一个循环中,然后如何打印出与密钥相关的数据?这几乎就像我需要为表本身制作Case和Opportunity键,但不确定这是否可行。
from simple_salesforce import Salesforce
#Define all data
Query_Dict = [
{'Cases' : [], 'Results' : [], "Query_String" : "Select Id, Opportunity From Case where Opportunity <> null"},
{'Opportunity' : [], 'Results' : [], "Query_String" : "Select Id, Opportunity_Name From Opportunity where Status = 'New'"},
]
#open Salesforce Connection
sf = Salesforce(username='myusername', password='mypassword', security_token='mytoken')
#Dump the query results into a results key for each row then convert to proper format
for tbl in Query_Dict:
tbl['Results'] = sf.query_all(tbl['Query_String'])
tbl['Cases'] = records tbl['Cases']['records']
tbl['Opportunity'] = records tbl['Opportunity']['records']
#print results associated with Cases key
print Query_dict['Cases']
答案 0 :(得分:2)
这几乎就像我需要为表格本身制作案例和机会键
你走在正确的轨道上。
完全按照您的建议行事的一种方法是使用名为Table_Name
的密钥,例如Table_Name: "Cases"
,这样您就可以执行此操作:
tbl[tbl['Table_Name']] = …
(由于你的任务陈述的右半部分不是有效的Python代码而且我不确定它应该是什么意思,我不确定如何修复它,但可能只是意味着再次用"Cases"
替换tbl['Table_Name']
。)
但我认为更好的解决方案是保留表的字典,而不是列表,以及 表格名称:
Query_Dict = {
'Cases': {'Cases' : [], 'Results' : [], "Query_String" : "Select Id, Opportunity From Case where Opportunity <> null"},
'Opportunity': {'Opportunity' : [], 'Results' : [], "Query_String" : "Select Id, Opportunity_Name From Opportunity where Status = 'New'"},
}
现在,使用viewitems
*:
for name, tbl in Query_Dict.viewitems():
tbl[name] = …
*请注意viewitems
是2.7特定的。如果您想与早期的2.x版本兼容,可以使用iteritems
;如果你想与3.x向前兼容,你可以使用items
(只要Query_Dict
小到足以使不必要的临时列表无害)。
这是完全使你的最后一行代码按照书面形式工作所需的内容(大写拼写错误除外):
print Query_Dict['Cases']
因为Query_Dict
现在实际上是一个字典,而'Cases'
作为键,而不是列表,这完全符合您的要求。