Computer 관심/Flask 9

[flask] sqlalchemy로 디비 입력시 None 에러

sqlalchemy로 디비에 정보가 none이 들어가게 되면 에러가 발생하게 된다. 그래서 디비에 들어가는 orm을 만들기 전에 아래처럼 체크를 하여 none이 있으면 다른 값으로 바꾸어서 넣어준다. 그 전에 pandas를 사용할 때는 none을 다른 값으로 바꾸어주는 함수를 사용했는데 아래의 방법이 더 나은것 같다. if inflow_product['customFields']['custom8'] == "part" or inflow_product['customFields']['custom8'] == "Part" : inflow_product['customFields']['custom8'] = True else: inflow_product['customFields']['custom8'] = False # ..

플라스크 팩토리 패턴으로 바꾸기

플라스크는 하나에 파이썬 파일에 서버를 쉽게 만들 수 있다. 엄청 간단한 기능을 만들거나 테스트앱을 만들때 간단히 하나의 파일로 만들면 빠르게 개발 할 수 있다. 하지만 조금만 앱의 크기가 커지면 하나의 파일로 코드를 작성하는게 불편해 지는 때가 온다. 팩토리 패턴을 사용하여 파일을 나눌 수 있다. 일단 참고한 사이트는 아래의 사이트이다. 사이트에 어떻게 나누어야 하는지 아주 자세하게 잘 나와있다. https://wikidocs.net/81044 2-01 플라스크 기초 다지기 현재 파이보 프로젝트는 `projects/myproject` 디렉터리 아래에 pybo.py 파일만 생성한 상태다. 그런데 이보다 규모를 갖춘 플라스크 프로젝트를 만들고자 한 ... wikidocs.net 간략하게 설명한다면 1. 파..

pythonanywhere에서 DB 마이그레이션(migration) 하기

https://flask-migrate.readthedocs.io/ 로컬 마이그레이션 set FLASK_APP=main.py 1. 마이그레이션 폴더를 추가함 flask db init 2. 마이그레이션 파일 생성 (생성된 파일을 잘 봐야 한다고 함. 왜냐면 테이블 이름이나 칼럼 이름을 바꿀경우 수동으로 수정 필요) $ flask db migrate -m "Initial migration." 3. 마이그레이션 적용 $ flask db upgrade 깃 커밋 1. 깃 커밋 후 푸쉬 파이썬 애니웨어에 적용 1. 파이썬 애니웨어에서 git pull (이를통해 적용을 시킬 파일까지 불러 올 수 있다.) 2. 파이선 애니웨어에서도 마이그레이션 적용 $ flask db upgrade ※ 호스팅한 서버의 마이그레이션 파..

sqlalchemy 사용시 db object를 jason으로 바꾸는 방법

디비에서 얻어온 객체는 딕셔너리 형태로 바꿔줘야 한다. 여러가지 방법을 시도했는데 가장 쉬운 방법은 아래와 같다. 플러터에서 객체를 json을 바꾸는 방법과 비슷하다. 디비모델에 as_dict함수를 추가한다. class User(db.Model): def as_dict(self): return {c.name: getattr(self, c.name) for c in self.__table__.columns} 그리고 바꾸려는 객체.as_dict()를 하면 response를 할 수 있다. 이 방법을 안쓰면 하나하나 {'name':instant.value}와 같은 방식으로 딕셔너리를 만들어서 전달해야한다.

2) 플라스크 api pythonanywhere MYSQL DB와 연결하기

이전글에서 말했듯 그냥 SQLite 를 디비서버 대신 사용하려 했었다. sqlite 파일이 파일루트에 생성된 것도 볼 수 있었는데 문제는 쓰기에서 파일의 변형으로 보아서인지 쓰기 동안 읽기도 불가능 한줄알았다. (알고 보니 그게 문제는 아니였다.) MYSQL DB로 옮겨보려고 한다. * sqlite에서 mysql로 옮기면서 디비를 만들때 디비설정에서 여러에러 발생한다. 1) sqlite에서 string에 size를 정해줄 필요가 없었는데 mysql에서는 정해 줘야한다. 2) default에 false 대신 0를 넣어줌 3) server_default에서는 스트링만 받는다. 4) 데이터 입력시 엑셀에 빈칸은 nan으로 되어 pandas (nan can not be used with MySQL 에러가 발생)..

1) 플라스크 api 서버 pythonanywhere에 배포

그냥 과정을 나열하면 복잡하다고 느낄 수 있기 때문에 4개의 섹션으로 나누었다. 1. 파일준비 2. 파이썬애니웨어에 파일설치 3. 파이썬애니웨어에 앱생성 4. 세팅(앱과 파일연결) 자신의 컴퓨터에서 해야할 부분 1. 파일준비 1) requirements.txt생성 2) 커밋한뒤 깃허브에 푸쉬하기 섹션 1 파일준비 끝 파이썬애니웨어에서 해야할 부분 2. 파일설치 1) 콘솔에 들어가 가상환경설치 (가상환경의 이름을 myvenv로 만듬) mkvirtualenv myvenv --python=/usr/bin/python3.8 2) 깃에서 클론하기 git clone https://github.com/깃이름/프로젝트이름.git 깃허브의 아이디와 비밀번호를 입력하라고 하는데 비밀번호 대신에 엑세스토큰을 붙여 넣는다. ..

파이썬으로 Firestore 에 데이터 올리기

플러터로 어플리케이션을 제작하였고, 어플리케이션에 필요한 데이터를 제공할 수 있는 서버가 필요했다. 파이어베이스의 파이어스토어는 쉽고 다양한 언어로 SDK를 제공한다. 그래서 플라스크를 사용하여 데이터를 올리는 간단한 서버를 만들었다. (굳이 서버로 만들지 않아도 됨....) 1. 웹사이트에서 서비스 어카운트 키 다운 받기 1) 파이어베이스에 들어가 새로운 프로젝트를 만든다. 2) 3) service accounts 탭에 들어가면 아래와 같은 화면을 볼 수 있고 파이썬을 클릭한다. 4) Generate new private key 다운로드 5) 받은 json형식의 파일을 serviceAccountKey라고 이름을 변경한다. 6) 파이썬이 있는 폴더에 함께 놓는다. 2. firestore 만들기 1) 좌측..

플라스크 static 파일 경로(플라스크 이미지 url)

플라스크로 이미지 주소를 전송하고 싶었다. 방법은 간단하다.(그런데 헤맷다..) static이라는 폴더를 만든뒤 그 안에 이미지를 넣는 것이다. 체크를 하기 위해 플라스크를 돌려서 localhost:5000/static/이라고 치면 not found가 나온다. localhost:5000/static/파일이름.확장자 라고 url에 쳐야 스테틱 폴더에 넣어놓은 사진이 나온다.

플라스크 사용해보기

장고를 가지고 심심풀이로 API서버를 만들어 보려고 하니까 장고를 놓은지 오래되서 기억이 가물 가물 했다. 또.... 이전에 일했던 기억 때문에 쓰고 싶지 않았다.. ㅠㅠ 확실히 장고가 좋긴하지만 심플한 서버만 사용하고 싶어서 플라스크로 만들어 보면 어떨가 생각이 들었다. 1. 플라스크 시작하기 플라스크 홈페이지(http://flask.pocoo.org/)를 들어가면 아래와 같이 정말 간단하게 플라스크 서버를 만든 것을 볼 수 있다. 1) main.py 파일 작성 from flask import Flask app = Flask(__name__) @app.route("/") def getHelloMsg(): return "Hello World!" 2) command로 서버 실행하기 $ pip install..