[Python] 기상어플 만들기 요약 정리


부트 캠프에서 데이터 엔지니어 수업을 들었을 때는, 잘 자른 타일을 하나씩 익히는 느낌이었습니다. 타일을 들고 살펴 보면서 '그래서 이걸 어디다 쓴다는 거지?' 라고 고민했습니다.

반면 이 유튜브는 그 타일을 여러 개 붙여서 만든 전체적인 그림을 먼저 보여주는 느낌입니다. 떨어져서 놓인 자석들이 하나만 가까워져도 차르르 다 같이 붙어버리는 것처럼 앞서 배운 지식들이 착착 붙는 경험을 했습니다.

MBTI 검사를 하면 S와 N이 번갈아 나오는데, 공부를 하면서 확신의 N이 되었습니다. 숲을 먼저 봐야 나무가 이해되는 종족.

공부한 것들을 그냥 두고 지나가기 아까워 기록합니다.
단계에 대한 간략한 설명을 할 것입니다.



1. 플라스크 앱 만들기

# __init__.py

from flask import Flask

app = Flask(__name__)

시작은 늘 그렇듯 앱 부터 만들기

2. html 연결

import requests
from flask import Flask, render_template
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
	return render_template('weather.html')
콘솔

install request
export FLASK_APP = app.py
flask run

3. config

import requests
from flask import Flask, render_template
from flask import Flask

app = Flask(__name__)
app.config['DEBUG'] = True

4. API 연결

url = f'http://api.openweathermap.org/data/2.5/weather?q={ city }&units=metric&appid={ api 번호 }'
city = seoul

r = requests.get(url.format(city)).json()
print(r)
api json 추출
weather = {
'city' : city, 
'temperature' : r['main']['temp'],
'description' : r['weather'][0]['description'],
'icon' : ,
}

...

return render_template('weather.html', weather = weather)

5. db연결

app.config['SQALCHEMY_DATABASE_URI'] ='sqlite:///weather.db'

...

db = SQAlchemy(app)

class City(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.string(50), nullabe = True)
console
sqlite3 weather.db
.table
.exit

python
from app import db
db.create_all()

from app import db

from app import City
seattle = City(name='Seattel')
london = City(name = 'London')
db.session.add_all([seattle, london])
db.session.commit()
exit()

sqlite3 weather.db
select * form city;

6.city입력하도록 하기

cities = City.query.all()

for city in cities:
r= requests.get(url.format(city.name)).json()


html에
{% for weather in weather_data %} 추가
html
<input class="input" name="city" type="text" placeholder="City Name">

의 button에 넣는다.

if request.method == 'post':
	new_city = request.form.get('city')
if new_city:
	new_city_obj = City(name=new_city)
	db.session.add(new_city_obj)
	db.session.commit()

좋은 웹페이지 즐겨찾기