Python으로 프로그래밍 Flask 편

4950 단어 파이썬Flask

파이썬으로 프로그래밍



사전 준비 테스트 데이터



테스트를 위해 drivers.csv를 사용하십시오.
htps : // 기주 b. 이 m/의 이케단/fぁsk_아니 p/t레에/로ゔぇぉp

아티팩트



배경



Python으로 만든 Insert 분 작성 툴을 Web화한다.
이유 : 현재의 것에서는 사용하기 어렵기 때문.

대상 사용자(예)



집에서 포트폴리오를 만들기 위해 웹 서비스를 만들고 있습니다.
데이터 작성을 위해 Insert 작성을 도구로 편리하게 사용하고 싶은 사람.

비 대상 사용자



현장에서 사용할 수 없다면 0이라고 생각하는 사람.
리뷰라든가 손님이라든가 말해 개발자에게 걸려오는 사람.
진척 진척만 말해 날에 모두 충동적으로 오는 사람.
클레임만 붙여 오는 사람.

INPUT Python 처리(GITHUB)



원안



· 파일을 업로드합니다.
· SQL을 만든다.
· 파일에 씁니다.
· 파일을 다운로드합니다.

환경



FLASK
SQL 문은 postgresql을 가정합니다.
파이썬 환경 구축은 아래 참조
htps : // m / 7110 / ms / 1 아 5968022373 99 28
pip3 install Flask
FLASK_APP=app.py FLASK_DEBUG=true flask run

조사



파일 업로드 방법은 아래 주소를 따릅니다.
htps // f sk. 파트 tsp 로지 cts. 코 m/엔/1.1. x/쿠이 cks rt/
AWS상에 FLASK를 Deploy시에 참고로 한 것.
htps : //에서. 이 m / 10도 히 6 / n / n 273 바 d25c378

이미지






출력 소스



소스 코드


Index.html
<html>
  <head>
    <tilte>Insert文作成ツール</tilte>
  </head>
  <body>
    <form method="post" action="/todos/uploader" enctype = "multipart/form-data">
      <input type="file" name="file" />
      <input type="submit" value="Create" />
    </form>
    <p>
    <a href="{{ url_for('.download_file') }}">Download</a>
    </p>
  </body>
</html>
InsertApp.py
from flask import Flask, render_template
from flask import request,send_file
app = Flask(__name__)

@app.route('/todos/uploader', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['file']
        f.save(f.filename)
        input = './' + f.filename
        output = './output.txt'

        table = input.split('/')[-1].split('.')[0]
        with open(input, encoding='utf-8') as f:
            with open(output, 'w', encoding='utf-8') as g:
                contents = "Insert into " + table + "("
                i = 0
                for row in f:
                    if i == 0:
                        typeList = row.rstrip().split(',')
                    if i == 1:
                        columList = row.rstrip().split(',')
                        k = 0
                        for c in columList:
                            if len(columList) == k + 1:
                                contents = contents + c + 'VALUES ('
                            else:
                                contents = contents + c + ','
                            k = k + 1
                        basecontets = contents
                    if i >= 2:
                        j = 0
                        for r in row.rstrip().split(','):
                            if not 'INTEGER' in typeList[j]:
                                r = "'" + r + "'"
                            if len(row.rstrip().split(',')) == j + 1:
                                basecontets = basecontets + r
                            else:
                                basecontets = basecontets + r + ','
                            j = j + 1
                        basecontets = basecontets + ');' + '\n'
                        g.write(basecontets)
                        basecontets = contents
                    i = i + 1
            print("作成完了しました")
    return render_template('index.html')

@app.route('/download')
def download_file():

    path = './output.txt'
    return send_file(path, as_attachment=True)



@app.route('/')
def index():
  return render_template('index.html')

좋은 웹페이지 즐겨찾기