기본 콘텐츠로 건너뛰기

Flask Flask-SQLAlchemy

Flask Flask-SQLAlchemy

Python/Flask

db init_app config

class DevConfig(Config): # Dev Config ENV = 'dev' DEBUG = True TESTING = True # Dev Database SQLALCHEMY_TRACK_MODIFICATIONS = True SQLALCHEMY_ECHO = False SQLALCHEMY_RECORD_QUERIES = True SQLALCHEMY_DATABASE_URI = 'mysql://아이디:비밀번호@192.168.1.222:3306/test' # 데이터베이스 Binds SQLALCHEMY_BINDS = { 'test' : 'mysql://아이디:비밀번호@아이피:포트/test', 'EXPORT' : 'mysql://아이디:비밀번호@아이피:포트/EXPORT', 'WH' : 'mysql://아이디:비밀번호@아이피:포트/WH', 'WH_SLAVE': 'mysql://아이디:비밀번호@아이피:포트/WH' }

모델 클래스

""" Database Bind : Below Values Must Be Check __bind_key__ : Database Name Has Bound __tablename__ : Table Name Will Use API 문서 주소 https://flask-sqlalchemy.palletsprojects.com/en/2.x/api/#models """ class Users(db.Model): __bind_key__ = 'test' __tablename__ = 'users' id = db.Column(db.Integer, primary_key = True, nullable = False, autoincrement = True) name = db.Column(db.String(10), unique = True, nullable = False) regDate = db.Column(db.DateTime, nullable = False) # def __init__(self, name: str, regDate: str): # self.name = name # self.regDate = regDate # def __repr__(self): return '' % self.name

쿼리 호출 문법...

from datetime import datetime from flask import Blueprint, request usertest_blueprint = Blueprint('usertest_blueprint', __name__) @usertest_blueprint.route('/user/insert/') def user_insert(name): from sanggi.system.models import Users users = Users(name, datetime.today().strftime('%Y-%m-%d %H:%M:%S')) Users.add(users) Users.commit() return 'Insert Test' @usertest_blueprint.route('/user/select', methods = ['GET', ]) def user_select(): from sanggi.system.models import Users users_all = Users.query.all() # from flask_sqlalchemy import get_debug_queries # print(get_debug_queries()) for item in users_all: print(item.name, ' | ', item.regDate) return 'Select Test' @usertest_blueprint.route('/user/who', methods = ['GET']) def user_who(): from sanggi.system.models import Users name = request.args.get(key = 'name', default = 'Unknown', type = str) whois = Users.query.filter(name == name).first() msg = 'Name {name} | RegDate {regDate}' return msg.format(name = whois.regDate, regDate = whois.regDate) """ first 메소드는 결과가 없을 시에 None 을 뱉고, 있다면 충족하는 것들중 최상위 한개를 뱉음 one 메소드는 결과가 없을시 NoResultFound 예외를 뱉고, 있다면 MultipleResultFound 예외를 뱉음 상황에 맞게 유용하게 사용 가능할 것 같당. """ """ filter 메소드 파라미터 설정에 따른 sql equals: query.filter(User.name == 'ed') not equals: query.filter(User.name != 'ed') LIKE: query.filter(User.name.like('%ed%')) IN: query.filter(User.name.in_(['ed', 'wendy', 'jack'])) # works with query objects too: query.filter(User.name.in_( session.query(User.name).filter(User.name.like('%ed%')) )) # use tuple_() for composite (multi-column) queries from sqlalchemy import tuple_ query.filter( tuple_(User.name, User.nickname).\ in_([('ed', 'edsnickname'), ('wendy', 'windy')]) ) NOT IN: query.filter(~User.name.in_(['ed', 'wendy', 'jack'])) IS NULL: query.filter(User.name == None) # alternatively, if pep8/linters are a concern query.filter(User.name.is_(None)) IS NOT NULL: query.filter(User.name != None) # alternatively, if pep8/linters are a concern query.filter(User.name.isnot(None)) AND: # use and_() from sqlalchemy import and_ query.filter(and_(User.name == 'ed', User.fullname == 'Ed Jones')) # or send multiple expressions to .filter() query.filter(User.name == 'ed', User.fullname == 'Ed Jones') # or chain multiple filter()/filter_by() calls query.filter(User.name == 'ed').filter(User.fullname == 'Ed Jones') OR: from sqlalchemy import or_ query.filter(or_(User.name == 'ed', User.name == 'wendy')) MATCH: query.filter(User.name.match('wendy')) """

from http://sanggi-jayg.tistory.com/41 by ccl(A)

댓글

이 블로그의 인기 게시물

[GCP] Flask로 TF 2.0 MNIST 모델 서빙하기

[GCP] Flask로 TF 2.0 MNIST 모델 서빙하기 Google Cloud Platform 우선 TensorFlow 2.0을 설치하자. 머신에 직접 설치하거나 도커를 다운받아 사용, 혹은 구글 colab을 활용( https://www.tensorflow.org/install)하면 되는데, TensorFlow에서 권장하는대로 머신에 VirtualEnv를 활용해서 설치하자 ( https://www.tensorflow.org/install/pip). 설치하는 김에 Flask도 같이 설치해보자. Compute Machine 하나를 생성(크게 부담 없는 예제라 g1 instance)하고, SSH를 연결하여 실행하면 된다. $ sudo apt update $ sudo apt install python3-dev python3-pip $ sudo pip3 install -U virtualenv # 굳이 system-wide로 flask를 설치할 필요는 없지만 그렇게 했다. $ sudo pip3 install flask $ sudo pip3 install flask-restful # virtualenv 환경에서 tensorflow 2.0 설치 $ virtualenv --system-site-packages -p python3 ./venv $ source ./venv/bin/activate # sh, bash, ksh, or zsh (venv) $ pip install --upgrade pip (venv) $ pip install --upgrade tensorflow 모든 환경이 마련되었으니, 우선 MNIST 모델을 TF 2.0으로 Training하여 모델을 Save 해 두자(tf_mnist_train.py). 대략 99% 이상 정확도가 나온다! import tensorflow as tf import numpy as np # 학습 데이터 load ((train_data, train_label), (eval_data, eval_label)) = tf....

스프링 프레임워크(Spring Framework)란?

스프링 프레임워크(Spring Framework)란? "코드로 배우느 스프링 웹 프로젝트"책을 개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다. '스프링 프레임워크'가 무엇인지 말 할 수 있고, 해당 프레임워크의 특징 및 장단점을 설명할 수 잇는 것을 목표로합니다. 1. 프레임워크란? 2. 스프링 프레임워크 "뼈대나 근간을 이루는 코드들의 묶음" Spring(Java의 웹 프레임워크), Django(Python의 웹 프레임워크), Flask(Python의 마이크로 웹 프레임워크), Ruby on rails(Ruby의 웹 프레임워크), .NET Framework, Node.js(Express.js 프레임워크) 등등. 프레임워 워크 종류 : 3. 개발 시간을 단축할 수 있다. 2. 일정한 품질이 보장된 결과물을 얻을 수 있다. 1. 실력이 부족한 개발자라 허다러도 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능하다. 프레임워크를 사용하면 크게 다음 3가지의 장점 이 있습니다. 프레임워크 이용 한다는 의미 : 프로그램의 기본 흐름이나 구조를 정하고, 모든 팀원이 이 구조에 자신의 코드를 추가하는 방식으로 개발 한다. => 이러한 상황을 극복하기 위한 코드의 결과물이 '프레임워크' 입니다. 개발자는 각 개개인의 능력차이가 크고, 따라서 개발자 구성에 따라서 프로젝트의 결과 차이가 큽니다. 2. 스프링 프레임워크(Spring Framework) 자바 플랫폼을 위한 오픈 소스 애플리케이션 스프링의 다른 프레임워크와 가장 큰 차이점은 다른 프레임워크들의 포용 입니다. 이는 다시말해 기본 뼈대를 흔들지 않고, 여러 종류의 프레임워크를 혼용해서 사용할 수 있다는 점입니다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크 이다. 여러 프레임워크들 중 자바(JAV...

Dummy to resolve the flask problems

Dummy to resolve the flask problems This post is about flask problems that I struggled with. Hope you this is useful things when you taste it. Issue : How to deploy a flask application on Apache2 Resolve : As you know, flask is a micro framework. It can be handled on Apache2 using WSGI module. See the reference. Reference: https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps Issue : Flask caused ERR_CONNECTION_ABORTED on POST Resolve : There are lots issues for this problem in principle. It caused when browser keep sending some buffer but server doesn't want to receive. My case is like this (submit.html) (submit.py) @bp.route('/submit', methods=["GET", "POST"]) def submit(): return render_template("submit.html") This kinda skel code to explain this. In flask case, this can be caused when it runs as develop server such as run...