Python 如何从我的数据库中为每个团队运行此api?
我使用这个API来获取团队中每个成员的用户电子邮件。这些团队来自mongo数据库。我想让这个API为数据库中的每个团队运行,并为每个团队的每个成员返回电子邮件列表。目前,API仅检索数据库中第一团队成员的电子邮件Python 如何从我的数据库中为每个团队运行此api?,python,python-3.x,mongodb,api,Python,Python 3.x,Mongodb,Api,我使用这个API来获取团队中每个成员的用户电子邮件。这些团队来自mongo数据库。我想让这个API为数据库中的每个团队运行,并为每个团队的每个成员返回电子邮件列表。目前,API仅检索数据库中第一团队成员的电子邮件 with open('config/config.json') as f: config = json.load(f) API_KEY = config['API_KEY'] # loads API key # Database info client = MongoClie
with open('config/config.json') as f:
config = json.load(f)
API_KEY = config['API_KEY'] # loads API key
# Database info
client = MongoClient(config['HOST'], config['PORT'])
db = client[config['DATABASE']]
teams = list(db.teams.find()) # gets all the teams from the database
def list_users():
url = 'https://api.pagerduty.com/users'
headers = {
'Accept': 'application/vnd.pagerduty+json;version=2',
'Authorization': 'Token token={token}'.format(token=API_KEY)
}
result = []
for team in teams:
payload = {
'team_ids[]': team['team_id'],
'limit': 100,
'offset': 0
}
r = requests.get(url, headers=headers, params=payload)
users = r.json()['users']
emails = []
# loops for each user and retrieves their email
for user in users:
if r.status_code == 200:
emails.append(user['email'])
else:
return None
return emails
return result
如何从数据库中为每个团队运行此功能?看起来您过早地从团队循环中返回。如果您在结果列表中收集电子邮件,您的问题就会得到解决
def list_用户():
url='1〕https://api.pagerduty.com/users'
标题={
“接受”:“application/vnd.pagerduty+json;version=2”,
'Authorization':'Token Token={Token}'。格式(Token=API_KEY)
}
结果=[]
对于团队中的团队:
有效载荷={
“团队id[]:团队[“团队id”],
“限制”:100,
“偏移量”:0
}
r=requests.get(url,headers=headers,params=payload)
users=r.json()['users']
电子邮件=[]
#为每个用户循环并检索他们的电子邮件
对于用户中的用户:
如果r.status_code==200:
email.append(用户['email'])
结果。追加(电子邮件)
返回结果