![](/img/trans.png)
[英]Write Multiple Documents to Firestore using python from 3rd party API
[英]How to update Firestore document when data changes when collected from 3rd Party API instead of creating new document
下面的代碼設置為從第三方 API 收集 NBA 比賽的數據。 目前一切正常,數據存儲在 GCP Firestore 中,但問題是每次調用 API 時,它都會為每個游戲創建一個新文檔。 所以說它每天調用 3 次,同一個游戲會有 3 個不同的文件。
我想要發生的是,每次調用 API 並且游戲的數據發生更改時,它都會更新原始文檔而不是創建新文檔。
任何幫助,將不勝感激。
import requests
import json
from firebase_admin import firestore
db = firestore.Client(project='xxxx')
def bluebet_nba_odds():
# MAKE VARIABLES GLOBAL
global away_team_win_odds, away_team, home_team_win_odds, home_team, start_time, event_title, event_id, competition
# API CALL
link = 'https://xxxxxxxxxx.com.au/json/reply/MasterCategoryRequest?EventTypeID=107&WithLevelledMarkets' \
'=true&WithLevelledMarkets=true '
# Request data from link as 'str'
nbadata = requests.get(link).text
# convert 'str' to Json
nbadata = json.loads(nbadata)
# JSON PARSE
for nba_odds in nbadata['MasterCategories'][2]['Categories'][0]['MasterEvents']:
competition = nba_odds['CategoryName']
event_id = nba_odds['MasterEventId']
event_title = nba_odds['MasterEventName']
start_time = nba_odds['MaxAdvertisedStartTime']
home_team = nba_odds['Markets'][0]['OutcomeName']
home_team_win_odds = nba_odds['Markets'][0]['Price']
away_team = nba_odds['Markets'][1]['OutcomeName']
away_team_win_odds = nba_odds['Markets'][1]['Price']
# WRITE TO FIRESTORE
data = {
'competition': competition,
'event_id': event_id,
'event_title': event_title,
'start_time': start_time,
'home_team': home_team,
'home_team_win_odds': home_team_win_odds,
'away_team': away_team,
'away_team_win_odds': away_team_win_odds,
'timestamp': firestore.SERVER_TIMESTAMP,
}
db.collection('bluebet_nba_season_odds').document().set(data), print('Game Data Written to Firestore')
if __name__ == "__main__":
bluebet_nba_odds()
沒有 arguments 的document()
每次調用時都會生成一個隨機文檔 ID。 不要那樣做。 而是為文檔命名。
db.collection('bluebet_nba_season_odds').document('you-choose-a-name-here')
查看API 文檔可能會對您有所幫助,以更好地了解 API 的工作原理,尤其是對於您正在調用的document()方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.