<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.
온라인 세션 복습¶
In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
In [ ]:
%matplotlib inline
In [112]:
bit = pd.read_csv('./Bitcoin.csv')
bit['Date'] = list(reversed(pd.date_range
(pd.to_datetime('2013-04-28'), periods=1609)))
# 2013년 부터 1609개의 데이터를 정렬함
In [113]:
bit = bit.sort_values(by='Date') # date열을 오름차순으로 정리
bit = bit.set_index('Date')
bit
Out[113]:
Unnamed: 0 | Open | High | Low | Close | Volume | Market Cap | |
---|---|---|---|---|---|---|---|
Date | |||||||
2013-04-28 | 1608 | 135.30 | 135.98 | 132.10 | 134.21 | 7.806648e+06 | 1500520000 |
2013-04-29 | 1607 | 134.44 | 147.49 | 134.00 | 144.54 | 7.757951e+06 | 1491160000 |
2013-04-30 | 1606 | 144.00 | 146.93 | 134.05 | 139.00 | 8.312655e+06 | 1597780000 |
2013-05-01 | 1605 | 139.00 | 139.89 | 107.72 | 116.99 | 8.026719e+06 | 1542820000 |
2013-05-02 | 1604 | 116.38 | 125.60 | 92.28 | 105.21 | 6.722784e+06 | 1292190000 |
... | ... | ... | ... | ... | ... | ... | ... |
2017-09-18 | 4 | 3591.09 | 4079.23 | 3591.09 | 4065.20 | 1.943210e+09 | 59514100000 |
2017-09-19 | 3 | 4073.79 | 4094.07 | 3868.87 | 3924.97 | 1.563980e+09 | 67520300000 |
2017-09-20 | 2 | 3916.36 | 4031.39 | 3857.73 | 3905.95 | 1.213830e+09 | 64918500000 |
2017-09-21 | 1 | 3901.47 | 3916.42 | 3613.63 | 3631.04 | 1.411480e+09 | 64677600000 |
2017-09-22 | 0 | 3628.02 | 3758.27 | 3553.53 | 3630.70 | 1.194830e+09 | 60152300000 |
1609 rows × 7 columns
In [ ]:
@app.route('/menus', methods = ['POST'])
def create_menu(): # request가 JSON이라고 가정
# 전달받은 자료를 menus 자원에 추가
request_data = request.get_json()
# 자동으로 클라이언트가 서버로 post를 이용해서 요청을 할 때 담기는 자료가 담겨있음
# {"name": ... , "price" : ... ,, }
new_menu ={
"id" : 4,
"name" : request_data['name'],
"price" : request_data['price'],
}
menus.append(new_menu)
return jsonify(new_menu)
In [115]:
@app.route('/menus/', methods = ['POST'])
def renew_data(id):
request_data = request.get_json()
update = {
'id' : id,
'name' : request_data['name'],
'price' : request_data['price'],
}
menus.append(update)
return jsonify(update)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_20376/2606368252.py in <module>
----> 1 @app.route('/menus/', methods = ['POST'])
2 def renew_data(id):
3 request_data = request.get_json()
4 update = {
5 'id' : id,
NameError: name 'app' is not defined
으로 일단 똑같은 코드를 이름만 바꾸고
In [ ]:
###
@app.route('/menus/1', methods = ['POST'])
###
def renew_data(id):
request_data = request.get_json()
update = {
'id' : id,
'name' : request_data['name'],
'price' : request_data['price'],
}
menus.append(update)
return jsonify(update)
주소를 건드려서 다른 주소에서 작동하는 지 확인해봄
In [ ]:
###
@app.route('/menus/<int:id>', methods = ['POST'])
def renew_data(id):
###
request_data = request.get_json()
update = {
'id' : id,
'name' : request_data['name'],
'price' : request_data['price'],
}
menus.append(update)
return jsonify(update)
In [119]:
menus = [
{'id':1, "name":"Espresso", "price": 3800},
{"id":2, "name":"Americano", "price": 4100},
{"id":3, "name":"Americano", "price": 4600},
]
request_data = {
"name" : "Sandwich",
"price" : 4000,
}
def renew_data(id):
update = {
'id' : id,
'name' : request_data['name'],
'price' : request_data['price'],
}
###
menus[id-1] = update
###
return menus
print(renew_data(2))
[{'id': 1, 'name': 'Espresso', 'price': 3800}, {'id': 2, 'name': 'Sandwich', 'price': 4000}, {'id': 3, 'name': 'Americano', 'price': 4600}]
메뉴를 새로고침한다는 개념을 일단 내가 알고있는 리스트와 딕셔너리를 이용해서 파이썬 환경에서 먼저 적용을 해보고 html환경에서 구현해보기로 함
In [ ]:
###
@app.route('/menus/put/<int:id>', methods = ['POST'])
###
def renew_data(id): # /<int:id> 는 함수에서 id부분에 int로 id를 넣어주는구나!
request_data = request.get_json()
update = {
'id' : id,
'name' : request_data['name'],
'price' : request_data['price'],
}
menus[id-1] = update
###
return jsonify(update)
###
일단 바뀐점은
- app.route에서 추후에 del을 넣으려면 put이란 주소를 추가하는게 편할 것 같아서 put/\int:id\를 했음
- 파이썬에서 작업하는 것과 다른게 return이 jsonify로 변환해서 보내줘야함 ㅇㅇ
DEL 구현하기¶
put을 구현하고 나니 del은 쉽게 구했음
In [ ]:
#DEL /menus
@app.route('/menus/del/<int:id>', methods = ['POST'])
def del_data(id):
menus.pop(id-1)
return jsonify(menus)
pop함수를 이용해서 리스트에서 제거를 했는데 뭔가 찜찜함
- 뭐가 찜찜하냐:
pop은 id의 인덱스위치에 있는걸 지우는건데, 한번만 지워봐도
[1, 2, 3, 4]로 구성된 리스트는 [1, 3, 4] 가 되면서 인덱스는 [0, 1, 2]가 됨
그러면 remove함수를 이용하는 편이 더 낫겠네
In [120]:
menus = [
{'id':1, "name":"Espresso", "price": 3800},
{"id":2, "name":"Americano", "price": 4100},
{"id":3, "name":"Americano", "price": 4600},
]
id = 2
new_menus = [i['id'] != id for i in menus]
print(new_menus)
[True, False, True]
리스트를 자세히 보면 같은지 아닌지가 원소가 되버린 리스트임을 알 수있다
listComprehension을 이용해봤는데 서툴렀네
i for i in menus if i['id'] != id
로 만들어주는게 맞음
여기서 i 는 menus의 원소인 딕셔너리였지 {'id': , 'name': ,...}
그래서 i['id']를 할 수 있었음
'TIL > [겨울방학 부트캠프]TIL' 카테고리의 다른 글
TIL 11일차 (22.01.16) (0) | 2022.01.17 |
---|---|
TIL 10일차 (22.01.14) (0) | 2022.01.15 |
TIL 8일차 (22.01.12) (0) | 2022.01.13 |
TIL 7일차 (22.01.11) (0) | 2022.01.12 |
TIL 6일차 (22.01.10) (0) | 2022.01.10 |