[개발] 파이썬을 이용한 Firebase 사용법[2]
Firebase 사용을 하다 보니 update라는 명령어가 상당히 위험하군요.
이 상태에서 SBD만 12로 변경하고 싶습니다. 그래서 update 함수를 이용하여 아래와 같이 실행하였습니다. 기존 Steem, SPA는 그 값이 유지가 되고 SBD만 12로 변경되기를 기대하고 있습니다.
ref = db.reference()
ref.update({'2019-11-01':{'tradingideas':{'SBD':12}}} )
결국 update라는 함수는 key 값인 'tradingideas'에 대한 최종 값을 저장하는 명령어입니다. 특정 변수 값만 변경하는 명령어가 아닌 셈이죠. 그렇다면 update라는 명령어는 아주 특별한 경우에 잘 알고 사용하여야 합니다.
그래서 특정 변수값만 변경할 수 있는 방법을 찾기 위하여 열심히 구굴링을 해보았습니다. set이라는 함수가 있군요. 사용법은 아래와 같습니다. child라는 명령어로 특정 key 값을 찾은 후 값을 변경하면 됩니다.
ref = db.reference()
ref.child('2019-11-01').child('tradingideas').child('SBD').set(12)
Firebase를 이용하여 거래 내역을 정리할 계획입니다. 앞에서 설명하였듯이 Firebase는 key 값을 잘못 사용하면 기존 값들이 모두 지워지는 문제가 있습니다. 예를 들어 날짜를 key 값으로 사용하였는데, 하루에 한 건 이상의 transaction이 생기면 기존 거래는 지워지는 문제가 생기겠죠. 그래서 key 값 정의가 아주 중요합니다.
블록체인에서도 trxid가 있죠. 이 값은 상당히 큰 값이기 때문에 중복되는 경우가 거의 없다고 보면 됩니다. 따라서 key 값으로 trxid를 사용하는 것이 좋을 것 같습니다.
지금 계획 중인 거래 record의 구조는 아래와 같습니다.
head : /trading/계정명/
key : trxid
거래 정보 : 'date':'2019-11-01', 'symbol' :'sct', 'type' : 'buy', 'price': 1.6011, 'qty':83.339, 'fee':0.0}
이러한 구조를 바탕으로 set을 이용하여 거래 정보를 DB에 넣어보겠습니다.
ref = db.reference()
ref.child('trading').child('tradingideas').child('87bcc436661a6d77555dcd63a4aced635999e46a').set(
{'date':'2019-10-31', 'symbol' :'sctm', 'type' : 'buy', 'price': 8.0, 'qty':200, 'fee':0.0})
ref.child('trading').child('tradingideas').child('d05ef3f4be0aa9ba6b7808bc3d8de19e6dc23d1a').set(
{'date':'2019-11-01', 'symbol' :'sct', 'type' : 'buy', 'price': 1.6011, 'qty':83.339, 'fee':0.0})
DB에 들어간 결과입니다.
생각한 대로 잘 기록되어 있군요. 거래 정보를 추가하는 경우에도 set 명령어를 사용하여야 합니다. 만약 update를 사용하면 기존 trxid는 모두 사라지고 마지막 trxid만 남아있는 신기한 경험을 하게 될 것입니다.
이제 scot DB를 끌어서 필요한 정보만 뽑는 일만 남았군요.
@tipu curate
Upvoted 👌 (Mana: 5/15)
Hi @tradingideas!
Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 4.398 which ranks you at #2480 across all Steem accounts.
Your rank has not changed in the last three days.
In our last Algorithmic Curation Round, consisting of 82 contributions, your post is ranked at #24.
Evaluation of your UA score:
Feel free to join our @steem-ua Discord server