React + FLASK + MySQL + sqlalchemy 에러 정리

장원령·2021년 9월 21일
0

Python

목록 보기
1/1

여기서는 'React + FLASK + MySQL + sqlalchemy'를 연동하면서 겪은 에러들에 대하여 정리합니다. 같은 스택을 사용할 경우 도움이 될수도 있어 정리합니다.

1. 모듈 설치 에러

1.1 ModuleNotFoundError: No module named 'flask_sqlalchemy'

pip install Flask-SQLAlchemy

1.2 ModuleNotFoundError: No module named 'flask_cors'

pip install -U flask-cors

1.3 'cryptography' package is required for sha256_password or caching_sha2_password auth methods

: python으로 MySQL을 사용할 경우 이런 에러가 간혹 뜨곤 한다.
: 아래의 명령어를 통해 해결했다.

pip3 install cryptography

1.4 reactjs - 모듈을 찾을 수 없음 - 'c : \ users \ test \ counter-app \ src'에서 'bootstrap/dist/css/bootstrapcss'를 확인할 수 없습니다

npm install react-bootstrap bootstrap

1.5 Can't resolve 'axios'

npm install axios

2. 실행 관련 에러

2.1 Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.

: 시작 모듈을 지정하지 않았을때 발생한다. 아래와 같이 시작 파일을 지정해주자

set FLASK_APP=시작 파일

  • ex) set FLASK_APP=start.py

3. Flask와 데이터베이스 관련 에러

3.1 Session 관련 에러 'SessionMaker' object has no attribute ' '

: sessionmaker 사용을 위해 engine을 두번 가동했을때 발생했다.

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://' + db['user'] + ':' + db['password'] + '@' + db['host'] + ':' + db['port'] + '/' + db['database']
app.config['SQLALCHEMY_TRACK_MODIFICATION'] = False
db = SQLAlchemy(app)

: 위와 같이 작성한 후 db.session.명령어 를 통하여 사용하니 에러가 없었다.

3.2 Update 관련 에러

: 단순히 query.filter()로 인자를 받아서, 인덱스로 슬라이싱 하여 그 값을 바꾸기만 하면, 데이터베이스에 저장이 되지 않는다.( 이 점에서 특히 고생했다.)

: 아래처럼, session을 사용해서 update 해야 값이 잘 적용됐다.

from_user = db.session.query(User).filter(User._username == from_hash).update({'_pointA': User._pointC - int(cur_value)})
db.session.commit()

3.3 ERROR 1822 (HY000): Failed to add the foreign key constraint. Missing index for constraint '_ibfk_1' in the referenced table ''

: Unique 키를 설정하지 않고, FOREIGN KEY를 설정하려고 할 경우의 에러. 먼저 UNIQUE를 설정해줘야 한다.

UNIQUE KEY를 설정하고, 제거 하는 방법은 아래와 같다.

  1. UNIQUE 키 설정하기
    alter table userinfo add UNIQUE (_userid);
    alter table user add UNIQUE (_username);
  2. 외래키 추가하기
    alter table userinfo add FOREIGN KEY(_userid) REFERENCES user(_username);
  3. UNIQUE 키 제거하기
    ALTER TABLE userinfo DROP INDEX id;

3.4 QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30

: timeout 에러이다.

db.session.flush()
db.session.close()

: 이 두 가지를 사용하면 해결이 가능하다 난 전자를 사용해서 해결했다.

4. React 관련 에러

4.1 pvyenv 파일 겹침 에러

: 정확한 에러 문장은 기억이 안나지만, npx create-react-app pybo 실행시, 이런에러가 뜨곤 한다.
: venv 환경에서 "pvyenv" 파일과 겹쳐서 나타나는 문제 같았다. Anaconda 환경에서 실행하면 이 파일이 플라스크 파일 내의 폴더와 겹치지 않아서 Flask 파일 내의 pybo 폴더에 리액트를 작성할 수 있었다.

venv 가상환경을 Anaconda로 바꿔서 플라스크 프로젝트를 만든다.

0개의 댓글