티스토리 뷰
728x90
현업에서 마스터 데이터를 일괄로 업로드 하여 변경하기를 원할 때가 있습니다.
이럴 때 사전에 정해진 포맷 규칙을 잡고 CSV 또는 Excel 파일로 업로드를 한다면 현업의 입장에서 업무하기가 한결 편해집니다.
아래 포스팅은 Flask에서 CSV 파일을 클라이언트에서 선택하여,
이를 특정 폴더에 복사 후 이것을 pandas 라이브러리로 읽어 DBMS에 insert 하는 코드입니다.
pandas의 성능이 몇 건 까지 처리를 해줄 지 아직 실험해 보지 않았으나, 몇 건 안되는 파일은 아주 처리가 잘 됩니다.
@bp.route('/upload/', methods=('GET', 'POST'))
def upload():
if request.method == 'POST':
#파일을 특정경로에 저장시킨다.
f = request.files['file']
uploaded_file = os.path.join(cf.UPLOAD_FOLDER, secure_filename(f.filename))
f.save(uploaded_file)
# pandas를 이용하여 csv파일을 읽어온다.
data = pd.read_csv(uploaded_file, header=0, encoding='euc-kr')
# SQLite3 DB로 저장하기
db_path = os.path.join('C:\projects\myproject', 'pybo.db')
engine = create_engine('sqlite:///{}'.format(db_path), echo=True, isolation_level="AUTOCOMMIT")
sqlite_connection = engine.connect()
#파일 업로드 시 테이블을 지우도 다시 올리는 개념
conn = engine.raw_connection()
conn.execute("delete from moduleinfo")
conn.close()
sqlite_table = 'tabl_name'
data.to_sql(sqlite_table, sqlite_connection, if_exists='append', index=True, index_label='id', dtype = {
'id': sqlalchemy.types.INTEGER()
#테이블 컬럼 적기
}
)
sqlite_connection.close()
#조회결과 렌더링
main_list = Maininfo.query.order_by(Maininfo.id.asc())
return render_template('main/maint_list.html', main_list=main_list)
728x90
'Flask python Jinja' 카테고리의 다른 글
[jinja2] for문에서 index값 얻기 (0) | 2022.04.27 |
---|---|
[Flask] IIS 에서 wfastcgi 연동하기 (0) | 2022.04.14 |
[Flask] IIS 연동 시 pybo can not be imported error 조치 (0) | 2022.04.12 |
[Flask] Flask에서 postgre 연결하기 (0) | 2022.04.03 |
[jinja] Flask에서 html 내 img 태그 동적 삽입 (0) | 2022.03.31 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 챗봇
- 로블록스
- 정보관리기술사합격
- 정보관리기술사독학
- pytorch
- iso12207
- wfastcgi
- 정보관리기술사
- IIS
- FLASK
- 밀키트
- 정보관리
- 131회정보관리기술사
- 12207
- s3
- AWS
- r
- 자기계발
- 밀키트요리
- 콘도챗봇
- hackerrank
- 추천시스템
- gpt3.5
- 기술사학원
- 추천도서
- 기술사
- 인조기프
- ISO 12207
- lambda
- 머신러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함