Flask로 기본 Hello World 찍기 및 CRUD > 파이썬 게시판 만들기

파이썬 게시판 만들기

그누 어디까지 써봤니? 나는 파이썬까지 써봤어!

Flask로 기본 Hello World 찍기 및 CRUD 정보

Flask로 기본 Hello World 찍기 및 CRUD

본문

https://youtu.be/PTZiDnuC86g

 

Flask https://www.palletsprojects.com/p/flask/

SQLAlchemy  https://www.sqlalchemy.org/

Flask-Marshmallow https://flask-marshmallow.readthedocs.io/en/latest/

Postman  https://www.getpostman.com/

 

버츄얼환경 구축

먼저 Python 3.8 설치 https://www.python.org/

 

https://sir.kr/so_python/155 참조

pipenv설치

pip install pipenv

버츄얼 환경으로 들어가기 

pipenv shell

버츄얼 환경에서 필요한 패키지 설치하기

pipenv install flask flask-sqlalchemy flask-marshmallow marshmallow-sqlalchemy

 

시작 파일 만들기

touch app.py

 

app.py에 

 

from flask import Flask, request, jsonify

from flask_sqlalchemy import SQLAlchemy

from flask_marshmallow import Marshmallow

import os

 

# Init app

app = Flask(__name__)

 

@app.route('/', methods=['GET'])

def get():

    return jsonify({ 'msg': 'Hello World'})

 

# Run Server

if __name__ == "__main__":

    app.run(debug=True)

 

입력한 후에

버츄얼 환경내에서

python app.py를 실행시키고.

 

localhost:5000으로 접속하면 

 

{

    "msg": "Hello World"

}

가 나옵니다.

 

postman을 사용해서 접속해 보세요..  앞으로 post,  put, delete등을 테스트 해 볼려면 

 

꼭 필요합니다.

 

다음으로 GET, POST, PUT, DELETE를 구현해 본 코드입니다. (버전업 되면서 strict가 없어졌네요)

 

from flask import Flask, request, jsonify

from flask_sqlalchemy import SQLAlchemy

from flask_marshmallow import Marshmallow

import os

 

# Init app

app = Flask(__name__)

basedir = os.path.abspath(os.path.dirname(__file__))

# Database

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'db.sqlite')

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# Init db

db = SQLAlchemy(app)

# Init ma

ma = Marshmallow(app)

 

# Product Class/Model

class Product(db.Model):

    id = db.Column(db.Integer, primary_key=True)

    name = db.Column(db.String(100), unique=True)

    description = db.Column(db.String(200))

    price = db.Column(db.Float)

    qty = db.Column(db.Integer)

 

    def __init__(self, name, description, price, qty):

        self.name = name

        self.description = description

        self.price = price

        self.qty = qty

 

# Product Schema

class ProductSchema(ma.Schema):

    class Meta:

        fields = ('id', 'name', 'description', 'price', 'qty')

 

# Init schema

product_schema = ProductSchema()

products_schema = ProductSchema(many=True)

 

# Create a Product

@app.route('/product', methods=['POST'])

def add_product():

    name = request.json['name']

    description = request.json['description']

    price = request.json['price']

    qty = request.json['qty']

 

    new_product = Product(name, description, price, qty)

 

    db.session.add(new_product)

    db.session.commit()

 

    return product_schema.jsonify(new_product)

 

# Get All Products

@app.route('/product', methods=['GET'])

def get_products():

    all_products = Product.query.all()

    result = products_schema.dump(all_products)

    return jsonify(result)

 

# Get Single Products

@app.route('/product/<id>', methods=['GET'])

def get_product(id):

    product = Product.query.get(id)

    return product_schema.jsonify(product)

 

# Update a Product

@app.route('/product/<id>', methods=['PUT'])

def update_product(id):

    product = Product.query.get(id)

 

    name = request.json['name']

    description = request.json['description']

    price = request.json['price']

    qty = request.json['qty']

 

    product.name = name

    product.description = description

    product.price = price

    product.qty = qty

 

    db.session.commit()

 

    return product_schema.jsonify(product)

 

# Delete Product

@app.route('/product/<id>', methods=['DELETE'])

def delete_product(id):

    product = Product.query.get(id)

    db.session.delete(product)

    db.session.commit()

    

    return product_schema.jsonify(product)

 

# Run Server

if __name__ == "__main__":

    app.run(debug=True)

 

추천
0
  • 복사

댓글 1개

© SIRSOFT
현재 페이지 제일 처음으로