10-5,6 : 도서관 대여 서비스 (개인 프로젝트)

Sue·2021년 11월 27일
0

엘리스 AI 트랙

목록 보기
10/10

[엘리스 AI 트랙] 10주차 - 4

  • 배포 전 준비 : .gitignore 설정
  • 배포 관련 에러 해결 및 배포

  • 배포 전 준비 : .gitignore 설정

    • 나는 그 전까진 어떤 걸 gitignore로 설정해야 하고 어떤 걸 올려야 할지 고민을 해본 적이 없어서 좀 막막했다. 그런데 좋은 사이트가 있었다.

      내 개발 환경을 전달하면 알아서 gitignore을 만들어주는 사이트 : https://www.toptal.com/developers/gitignore

    • 두 번째 문제는 이미 내가 그 전에는 이걸 신경쓰지 않았기 때문에 원격 저장소에 gitignore로 관리해주어야 할 것들이 모두 올라가 있다는 것이었다. 이는 구글링으로 https://sustainable-dev.tistory.com/125 이렇게 하면 된다고 해서 시도했다.

    • 그런데 내가 올리고 싶지 않았던 폴더가 그대로 올라가있었다. 가상환경 디렉토리나 vscode 설정 디렉토리 등. 이 문제가 나는 gitignore가 동작하지 않는 거라고 생각하고 오랜 시간 구글링하고 삽질을 했다.

    • 그런데.. 그냥 내가 원격 저장소에 저장하지 않을 내용을 그냥 gitignore에 수동으로 추가해주니 간단하게 해결되었다. 이미 내 gitignore 파일에 .vscode/*라는게 이미 적혀있었는데 나는 저 코드가 .vscode 폴더를 포함한 하위 모든 파일을 무시하는 거라고 생각했는데, 아니었다. .vscode/를 추가해주니 해결되었다.

  • 배포

    제일 많은 에러를 겪었다.
    • vm에서 mysql 다시 테이블 및 스키마 설정

    • csv 파일 읽어서 데이터 삽입 다시.. → excel의 mysql 도 못쓰고 코드로 해야하는 문제

    • 데이터베이스 이름 설정을 로컬에서 설정한 거랑 다르게 해서 다시 똑같이 맞춰주는 문제

          import csv
          from datetime import date, datetime
          from dotenv import load_dotenv
          import os
          import mysql.connector

          load_dotenv()
          mysql_pw = os.environ.get("MYSQL_PASSWORD")

          mydb = mysql.connector.connect(
            host="localhost",
            user="root",
            password=mysql_pw,
            database="elice_library"
          )

          mycursor = mydb.cursor()
          beforeSQL = "DELETE FROM books_tb;"
          mycursor.execute(beforeSQL)
          mydb.commit()
          sql = "INSERT INTO books_tb (book_name, publisher, author, publication_date, pages, isbn, description, link, img_path) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s)"

          with open('library.csv', 'r', encoding='UTF-8-sig') as f:
              reader = csv.DictReader(f)

              for row in reader:
                  publication_date = datetime.strptime(
                                  row['publication_date'], '%Y-%m-%d').date()
                  img_path = f"/book_img/{row['id']}"
                  try:
                      open(f'../static/{img_path}.png')
                      img_path += '.png'
                  except:
                      img_path += '.jpg'

                  val = (row['book_name'], row['publisher'], row['author'], publication_date, int(row['pages']), int(row['isbn']), row['description'], row['link'], img_path)
                  mycursor.execute(sql, val)

              mydb.commit()
              print(mycursor.rowcount, "record inserted.")

기타 오류

  • 오류 1 : 디렉토리 경로를 일부 정리하면서 하위 모듈에서 상위 폴더와 같은 위치의 다른 모듈 참조해야 하는 문제. → 참고 : https://jhryu1208.github.io/devlang/2020/11/17/dirimport/

  • 오류 2 : 인코딩 문제 (참고 : https://airpage.org/xe/language_data/20205)

  • 오류 3: key error → csv 파일에서 데이터가 없는 로우가
    (, , , , ) 이런 식으로 저장되고 있었음 → 빈 문자열을 int 등의 형식에 맞추어 저장하려 하니 에러 남 → vscode에서 모두 지우고 주어진 데이터만 저장.

  • 오류 4 : 인코딩 문제 2 →엑셀에서 id로 저장해주었던 컬럼이 가져와지지 않는 문제 : https://github.com/clld/clldutils/issues/65 로 해결

  • 오류 5: **sudo python3 app.py** 할 때모듈이 없다 릴레이 → mysql이 없다 dotenv가 없다 flask_bcrypt가 없다....... 모두 새로이 다운로드 해주었음. 그런데도 flask_bcrypt는 계속 없다고 나옴 → 구글링을 계속 해서 3페이지까지의 모든 포스팅을 봤는데 모두 거의 같은 내용으로 설치 해주라고만 떴다.... 설치는 됐는데 계속 노 모듈이라고 오류 뱉음... → sudo를 붙이고 설치해주니까 됐음..


  • 유저 네임과 비밀번호 설정 등을 엘리스에서 준 id 와 비번으로 해야하는 줄 알고 잘못 설정해서 다시 해야했던 오류

0개의 댓글