공부방 > flask
로컬개발환경구성하기
위치 > c:\venvs\mysite.cmd
@echo off
@cd c:\projects\flask
@set FLASK_APP=smartfarm
@set FLASK_DEBUG=true
@set APP_CONFIG_FILE=c:\projects\flask\config\development.py
@c:\venvs\mysite\scripts\activate
위치 > C:\projects\flask\smartfarm
from flask import Flask,request,jsonify
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
import config
db = SQLAlchemy()
migrate = Migrate()
def create_app():
app = Flask(__name__)
#app.config.from_object(config)
app.config.from_envvar('APP_CONFIG_FILE')
#ORM
db.init_app(app)
migrate.init_app(app,db)
from . import models
#블루프린터(앱을 분할하기 위한 플라스크의 기능)
from .views import main,monitor,smartfarm
app.register_blueprint(main.bp)
app.register_blueprint(monitor.bp)
app.register_blueprint(smartfarm.bp)
return app
위치 > (mysite) c:\projects\flask
프로그램 설치
pip install flask
pip install flask-sqlalchemy 파이썬이 제공하는O/R 매퍼 또는 ORM(Object-Relational Mapping)
pip install flask-migrate 데이터베이스의 테이블 작성이나 컬럼 변경등을 실시하는 기능
pip install
pip install
pip install
pip install
pip install
pip install
#Step1. 서버와 개발 환경을 위한 config 분리
config
__init__.py
default.py
production.py
development.py
default.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
development.py
from config.default import *
SQLALCHEMY_DATABASE_URI='sqlite:///{}'.format(os.path.join(BASE_DIR,'security.db'))
SQLALCHEMY_TRACK_MODIFICATIONS=False
SECRET_KEY="dev"
production.py
from config.default import *
SQLALCHEMY_DATABASE_URI='sqlite:///{}'.format(os.path.join(BASE_DIR,'security.db'))
SQLALCHEMY_TRACK_MODIFICATIONS=False
SECRET_KEY="dev"
__init__.py
app.config.from_envvar('APP_CONFIG_FILE')
위치 > C:\projects\flask\smartfarm
models.py
CRUD(Create,Read,Update,Delete) 기능 익히기
from security import db
from smartfarm import db
class User(db.Model):
id=db.Column(db.Integer,primary_key=True)
username=db.Column(db.String(150),unique=True,nullable=False)
password=db.Column(db.String(200),nullable=False)
email=db.Column(db.String(120),unique=True,nullable=False)
class Syslog(db.Model):
id=db.Column(db.Integer,primary_key=True)
receivedat=db.Column(db.String(150),nullable=False)
fromhost=db.Column(db.String(200),nullable=False)
message=db.Column(db.String(500),nullable=False)
class Sensor(db.Model):
id=db.Column(db.Integer,primary_key=True)
distance=db.Column(db.String(150),nullable=False)
temperature=db.Column(db.String(200),nullable=False)
humidity=db.Column(db.String(120),nullable=False)
regdate=db.Column(db.DateTime(),nullable=True)
데이터베이스에 접근
flask shell
from security.models import User
from datetime import datetime
from security import db
u =User(username='admin',password='123456',email='test@test.com')
db.session.add(u)
db.session.commit()
User.query.all()
User.query.filter(User.id==1).all()
User.query.get(1)
User.query.filter(User.username.like('%ad%')).all()
수정
db.session.commit()
삭제
db.session.delete(u)
db.session.commit()
결론
mysql에서 배운 DML(select,update.delete,insert )문을 몰라도 사용할 수 있다.
서버개발환경구성하기
고급
참고도서
python Flask Web App 개발입문