발생일: 2015.12.24 키워드: flask, file upload, 파일 업로드, 플라스크, upload multiple files in flask 문제: flask 에서 멀티 셀렉트가 가능한 파일 인풋으로 여러 개의 파일을 업로드하려고 한다. 해결책: 아래와 같이 multiple 옵션을 주고, flask.request.files 객체의 getlist() 를 사용하면 된다. @app.route("/upload", methods=["POST"]) def upload(): uploaded_files = flask.request.files.getlist("file") print uploaded_files return "" 참고: http://stackoverflow.com/questions/1181718..
발생일: 2015.12.24 키워드: sqlite3, python, 파이썬, dictionary, json 문제: 파이썬에서 sqlite 3 모듈로 작업 중이었는데, 아래와 같은 오류가 난다. ProgrammingError: You did not supply a value for binding 1 아래와 같은 코드였다. def insert_data(cursor, stat_type, start_date, app_name, age, value): query = ''' INSERT INTO table (start_date, app_name, age, value) VALUES (:start_date, :app_name, :age, :value) ''' % stat_type cursor.execute(query,..
발생일: 2015.12.23 키워드: python, 파이썬, strptime, 문제: 2015년 첫번째 주의 시작이 몇 일인지 가져오려고 한다. 해결책: datetime 모듈의 strptime() 함수를 사용하면 된다. > datetime.datetime.strptime('201501-1', '%Y%W-%w') datetime.datetime(2015, 1, 5, 0, 0) %w 는 어떤 요일을 한 주의 시작으로 볼 것인지를 판단하는 값이다. 0 = 일요일 1 = 월요일 위 코드는 월요일을 한 주의 시작으로 보았을 때, 2015년의 01번째 주에 해당하는 datetime 객체를 리턴한다. 리턴된 값을 보면, 2015년 1월 5일이 첫 주인 것을 알 수 있다. 마찬가지로, 아래 코드로 2015년의 50번째..
발생일: 2015.12.21 키워드: openpyxl, xlrd, 파이썬 엑셀, python excel, read excel file using python, xlsx 문제: 파이썬으로 엑셀 파일을 읽어오려고 한다. 해결책: 내가 검색을 짧게 해서 그런지 모르겠지만, xls 형식의 파일과 xlsx 형식의 파일을 지원하는 라이브러리는 찾지 못했다. xls 파일을 읽어오려면 xlrd 라이브러리를, xlsx 파일을 읽어오려면 openpyl 라이브러리를 사용하면 된다. - xlrd: http://www.lexicon.net/sjmachin/xlrd.html - openpyxl: https://openpyxl.readthedocs.io 먼저, xls 파일은 xlrd 라이브러 사용해서 아래처럼 가져올 수 있다. w..
발생일: 2015.12.28 키워드: 413, flask 문제: 파일 업로드할 때 특정 개수 이상의 파일을 업로드하려고 했더니, 서버에서 413을 응답한다. 파일 용량이 너무 커서(too many bites) 발생하는 오류다. http://www.checkupdown.com/status/E413.html 해결책: 이 프로젝트에서는 웹서버로 flask를 쓰고 있는데, 아래처럼 업로드 허용 용량을 정의할 수 있다. from flask import Flask, Request app = Flask(__name__) app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 논의: 413 응답을 nginx 에서 내려줬다면, 아래 포스트를 참고하면 된다. http://ohgyun...
발생일: 2015.12.27 키워드: python, module, import 문제: 파이썬에서 아래와 같이 커스텀 에러 파일을 정의하고, [MyError.py] class MyError(Exception): ... 아래와 같이 다른 파일에서 모듈을 임포트했다. [example.py] import MyError MyError # 여기서 오류 발생 헌데 아래와 같은 오류가 발생한다. Python: 'module' object is not callable 왜일까? 해결책: 내가 임포트해온 것은 모듈이었고, 모듈 내의 클래스를 가져와야 했었다. 파일명과 클래스명이 동일해 더욱 헷갈렸던 거다. my_error.py 와 같이 파일명을 변경하고, 아래처럼 가져오는 방법으로 해결했다. import my_error m..
발생일: 2015.12.26 키워드: python, 파이썬, virtualenv, 가상 환경 문제: 프로젝트에서 파이썬의 특정 버전을 갖는 가상 환경을 구성하려고 한다. 해결책: 파이썬 버전 매니저인 pyenv 와, 버전 별 환경을 구성할 수 있는 pyenv-virtualenv 플러그인으로 특정 파이썬 버전을 갖는 환경을 구성할 수 있다. 먼저 brew 로 설치하고, $ brew install pyenv $ brew install pyenv-virtualenv 프로젝트 디렉토리에서 아래 명령을 실행하면, .python-version 파일이 생성되면서 프로젝트의 파이썬 버전을 정의할 수 있다. $ pyenv local 2.7.10 $ pyenv virtualenv 2.7.10 venv 기타 명령 # 가상환..
발생일: 2015.12.26 키워드: 파이썬, python, pyenv 문제: pyenv 설치 중 아래와 같은 오류가 발생했다. ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib? 해결책: 아래 깃헙 이슈에서 여러가지 해결 방법을 제시하고 있다. https://github.com/yyuu/pyenv/issues/22 openssl 을 삭제하고 다시 시작하거나, configure 옵션을 설정해주는 라는데, 시도해봐도 해결이 안된다. 나한텐 homebrew 에 뭔가 문제가 있었나보다. 혹시나 해서 homebrew를 삭제하고 새로 설치했더니 해결됐다!
발생일: 2015.12.24 키워드: python, 파이썬, jinja 문제: jinja 템플릿에서 URL로 사용할 문자열인데, & 가 & 로 출력된다. HTML 이스케이프를 무시할 수 없을까? 해결책: autoescape 블럭으로 특정 부분은 이스케이프하지 않을 수 있다. {% autoescape true %} {{normal_string}} {% endautoescape %} {% autoescape false %} {{url_string}} {% endautoescape %} 아니면, |safe 필터를 다는 식으로 처리하면 된다. {{url_string|safe}} 참고: http://jinja.pocoo.org/docs/dev/templates/#autoescape-extension http://..
발생일: 2015.12.30 키워드: python, 파이썬, 환경변수, env, environ 문제: 파이썬으로 환경변수를 읽어오려고 한다. 해결책: os 모듈의 environ 함수를 사용하면 된다. import os os.environ['FOO'] 이렇게 가져오면 읽어올 수 있지만, 환경변수 중에 FOO가 없으면 KeyError 가 발생한다. raise KeyError(key) KeyError: 'FOO' KeyError 를 처리하기 번거로운 상황이라면, os.getenv()를 사용하는 게 좋다. 값이 없을 경우엔 None을 리턴한다. import os os.getenv('FOO') os.getenv('NOT_EXIST') #-> None