[개발] 파이썬을 이용한 Firebase 사용법[2]

avatar

Firebase 사용을 하다 보니 update라는 명령어가 상당히 위험하군요.

현재 DB 저장 상태는 아래와 같습니다.

이 상태에서 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를 끌어서 필요한 정보만 뽑는 일만 남았군요.



0
0
0.000
3 comments
avatar

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:
  • Some people are already following you, keep going!
  • The readers like your work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

0
0
0.000