[AD]MCO VISA 암호화폐로 결제하자

굳헬로의 스팀 프로그램 일기!! 열세번째 #13 웹 프로그래밍의 시작!! 파이썬을 이용하여 정보를 MySQL 데이터 베이스에 저장해보기!!

in sct •  8 months ago 

steem.jpg

무더운 하루 였네요.

전 시골집에 여행와서 마당에 수영장 설치하여 아들님과 물놀이도 하고 맥주도 마시면서 즐거운 하루를 보내었네요.

오늘 공부는 포기할까 싶었지만, 그래도 힘내서 오늘의 일기 시작해보겠습니다.


이제까지 공부했던 것들을 활용하여 앞으로 웹으로 누구나 접속해서 사용할 수 있도록 프로그램을 짜보려고 계획중인데요.

오늘은 그 첫 단계로 웹 프로그래밍을 할 수 있도록 몇가지 프로그램을 설치하고 테스트도 해보도록 하겠습니다.

저는 웹서버 운영을 위한 AutoSet 오토셋이라는 아파치 웹서버와 PHP 웹 프로그래밍, 그리고 MySQL 데이터베이스 등을 제공해주는 시스템을 설치해서 웹 서비스를 하려고 합니다.

오토셋은 다음의 링크에서 다운받아서 설치하면 됩니다.

http://autoset.net/xe/download_autoset_10_7_2

현재 최종버전이 나와 있으며, 윈도우에 설치하여 편하게 웹 서비스를 제공할 수 있답니다.

오토셋 설치와 아파치, PHP, MySQL에 관한 자세한 설명은 생략하기로 하고, 저는 스팀엔진 파이썬 프로그램을 웹 브라우저를 통해 실행하는데 목적을 두고 프로그램 일기를 진행해 나가도록 하겠습니다.

오토셋을 설치하고 나면 MySQL을 사용할 수 있는데, MySQL은 데이터를 저장할 수 있는 데이터 베이스 시스템입니다.

스저는 팀엔진 파이썬 프로그램을 웹 서비스로 제공하기 위해 필요한 자료들을 MySQL 데이터 베이스에 저장하려고 합니다.

이제 파이썬을 이용하여 MySQL 데이터베이스에 데이터를 저장해 보도록 하겠습니다.

오늘 저장할 데이터는 어제 공부했던 특정 계정의 토큰 임대내역입니다.

파이썬으로 스팀엔진 블록익스플로러를 분석해 토큰 임대내역을 뽑아내는 작업은 상당한 시간이 필요합니다.

거기다 앞으로 블록체인에 데이터가 더 많이 쌓일수록 작업 시간은 더 늘어나겠죠.

그래서 한번 작업한 내역들은 따로 데이터베이스에 저장해 두면, 빠르게 데이터를 불러와 사용할 수 있으며, 새로이 추가 되는 정보들만 스팀 블록체인에서 가져와 데이터 베이스에 저장하면 되기 때문에 작업 시간을 상당히 줄일 수 있습니다.

먼제 데이터베이스를 사용하려면 데이터를 저장할 테이블들을 생성해야 합니다.

오늘은 스팀엔진 토큰들의 임대내역을 저장하려고 하기에, 스팀엔진 블록 익스플로러에 어떤 내용들이 저장되는지 살펴보겠습니다.

임대내역이 저장된 블록에는 다양한 정보들이 보이는데 모든 정보를 저장하면 저장 공간만 차지하게 될테니 필요한 정보만 저장하도록 하겠습니다.

블록넘버가 block_num필요할 테고, 임대를 보낸 sender임대를 받는 to 토큰명 symbol 수량 quantity 그리고 언제 임대를 보냈는지 timestamp 정도의 정보가 필요할 것 같네요.

이 데이터를 저장하기 위해 데이터베이스에 테이블들을 다음과 같이 생성하였습니다.

우선은 데이터 베이스를 생성하고 테이블을 만드는 설명은 쉽지 않기에 생략하도록 하겠습니다.

오토셋 튜토리얼 http://autoset.net/xe/tutorial을 참고하시거나 따로 문의 주시면 개별적으로 도움을 드리도록 하겠습니다.

이제 데이터베이스가 준비 되었으니 파이썬에서 테이터베이스에 연결을 해보도록 하겠습니다.

먼저 파이썬에서 MySQL 데이터베이스를 사용하려면 데이터베이스 연결 모듈이 필요합니다.

이 모듈은 파이썬을 통해 간편하게 설치할 수 있답니다.

커맨드 창에서 pip install PyMySQL을 입력하여 PyMySQL 모듈을 설치해 줍니다.

이제 MySQL 데이터베이스를 사용하기 위한 준비가 끝났으니 어제 만든 코드를 수정하여 임대내역을 데이터베이스에 저장해 보겠습니다.

쉽지 않았지만, 일단은 성공을 하였네요.

block_num = ""
    for bn in action.select("div[class='foot']") :
        block_num = bn.find(attrs={"href" : True})
    block_num = block_num.attrs["href"].replace("/b/", "")

어젠 사용하지 않았던 block_num을 찾아내고

time = time.text.replace("\n", "")
time = action.find("time") 

임대를 보낸 시간도 찾아내었습니다.

앞에서 설치한 PyMySQL 을 사용하여 데이터베이스에 입력을 해보겠습니다.

import pymysql
db = pymysql.connect(host=host, port=3306, user=user, passwd=passwd, db=db_name, charset='utf8')

cursor = db.cursor()
sql = "INSERT INTO delegate (block_num, sender, to_ , symbol, quantity, timestamp) VALUES(" + block_num + ", '" + sender.text + "', '" + username +"', '" + json_data["symbol"] + "', " + json_data["quantity"] + ", '" + time + "')"
print(sql)
cursor.execute(sql)

db.commit()

스팀엔진 블록 익스플로러부터 필요한 정보를 뽑아서 데이터베이스에 입력할 쿼리 sql 을 만들어서 실행을 해보았습니다.

INSERT INTO delegate (block_num, sender, to_ , symbol, quantity, timestamp) VALUES(375329, 'ukk', 'team1p', 'SCT', 1, '2019-06-20 12:55:42 UTC')

데이터베이스에 정보를 입력하는 쿼리 sql은 위와 같습니다.

데이터베이스에 값들이 잘 들어갔네요.

사실 많은 시행착오가 있었지만, 힘겹게 힘겹게 오류를 수정하여 데이터베이스에 정보를 저장하는데 성공하였네요.

정말 뿌듯합니다.

현재는 team1p 계정의 정보만 입력하였지만, 앞으로 SCT, AAA, SCTM 등 다양한 스팀엔진 토큰들의 임대 정보들을 모두는 아니고 필요한 만큼은 입력하려고 생각중입니다.

먼저 웹으로 오픈하여, 임대 내역 정보가 필요한 유저들의 정보들을 모두 입력하면 좋을 것 같네요.

그리고 이 데이터베이스를 이용하여 쉽고 빠르게 웹으로 정보를 확인할 수 있도록 만들 예정입니다.

시간이 얼마나 걸릴지는 모르겠지만, 매일 조금씩 새 기능들을 공부하고 익혀, 여러분들에게 도움이 되도록 하겠습니다.

그럼 행복한 하루 되세요.


굳헬로의 스팀 프로그램 일기!! 시리즈

#1 굳헬로의 스팀 프로그램 일기!! 대망의 시작 #1 Python 프로그램 설치 && steemengine 파이썬 api 설치 && 간단한 steemengine 예제

#2 굳헬로의 스팀 프로그램 일기!! 그 두번째 #2 비주얼 스튜디오 코드 프로그램 설치 && 비주얼 스튜디오 코드를 사용하여 파이썬 다루기 && 간단한 steemengine 예제

#3 굳헬로의 스팀 프로그램 일기!! 세번째 #3 스팀엔진 토큰의 정보를 가져오는 findOne() && 누군가의 토큰 사용 내역을 가져오는 get_history() && JSON 데이터 출력

#4 굳헬로의 스팀 프로그램 일기!! 네번째 #4 steemengine Token 클래스 && Token.get_holder() && Token.get_market_info() && Token.get_buy_book() && Token.get_sell_book()

#5 굳헬로의 스팀 프로그램 일기!! 다섯번째 #5 스팀엔진 블록을 뒤져서 원하는 정보를 찾아보자!! 스팀엔진 마켓 거래 내역을 뽑아내는 예제

#6 굳헬로의 스팀 프로그램 일기!! 여섯번째 #6 파이썬으로 스팀엔진 토큰들을 클레임 해보자.

#7 굳헬로의 스팀 프로그램 일기!! 일곱번째 #7 프로그램 일기도 어느덧 1주일!! 드디어 첫 실전!! 무한 반복 작업 수행하기!! 이제 직접 클레임 하는 손맛은 잊자. 무한 반복 자동 클레임!!

#8 굳헬로의 스팀 프로그램 일기!! 여덟번째 #8 텔레그램 봇을 이용해 알림을 받아보자!! && 무한 반복 자동 클레임의 정보를 텔레그램으로 받아보기!!

#9 굳헬로의 스팀 프로그램 일기!! 아홉번째 #9 무한 반복 자동 클레임 업그레이드!! && 토큰 잔고 확인 && 토큰 전송과 토큰 전송 내역을 텔레그램으로 받아보기!!

#10 굳헬로의 스팀 프로그램 일기!! 열번째 #10 토큰 전송내역을 검사하고, 토큰을 전송 받으면 텔레그램으로 알림을 받아보기!!

#11 굳헬로의 스팀 프로그램 일기!! 열한번째 #11 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (1/2)

#12 굳헬로의 스팀 프로그램 일기!! 열두번째 #12 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (2/2) 스팀엔진 토큰 임대내역 추적 완료!!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

마당에서 물놀이 재밌겠네요! ㅎㅎ 저도 끼워주시죠? ㅋㅋ
쉴땐 확실하게 쉬어야죠? 공부는 포기하셔도 됩니다~ ㅎㅎ

ㅎㅎㅎ 함께하시죠~~ 이곳은 울산 두동면입니다~

놀땐 놀고~ 쉴땐 공부중이네요~~ 그래도 음주는 쉬지 않고 있습니다~ ㅎㅎㅎ

ㅋㅋㅋㅋ 음주도 가끔 쉬어주세요^^ 건강을 위해~~

독거오라버니 먼저 쉬고 이야기하세요^^~

ㅋㅋㅋㅋㅋ 투럽이때문에 내가 못살아~~~
아! 근데 이사는 한거야?

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

python이 진짜 좋은게 pip 인것 같아요.

네~ 요즘엔 윈도우에서도 리눅스처럼 사용할 수 있어 좋은 것 같아요~

union.sct님이 goodhello님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
union.sct님의 [공지] 스판유니언 조합원 대상 14차 큐레이션 수익배분 완료 안내

...% 3 31 2차 추가 goodhello/td> 1000 1.13% 3 ...

Hi @goodhello!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.951 which ranks you at #4228 across all Steem accounts.
Your rank has improved 9 places in the last three days (old rank 4237).

In our last Algorithmic Curation Round, consisting of 257 contributions, your post is ranked at #105.

Evaluation of your UA score:
  • You're on the right track, try to gather more followers.
  • The readers like your work!
  • Good user engagement!

Feel free to join our @steem-ua Discord server