Can't load plugin..

chkkkky·2024년 7월 21일

sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:mysql.pymysql

과제를 하다말아서 노트북으로 해야지 ~했는데
오류때문에 몇시간을 날렸는지 모르겠다...
gpt와 많은 대화를 나눴다 ㅠㅠ(이건 쳐봐도 잘안나옴)

workbench로 권한때문에 골머리 싸매다가
권한을 주고 난리를 치니깐 이젠 이 오류가..


첫번째로 물어보는건 설치가 되어있냐였는데
되어있다고요...

pip install만 몇번을 해봤는지 모르겠다 ㅋㅋ

pip install --upgrade sqlalchemy pymysql

호환성 문제때문에 업그레이드를 하라는데 그것도 되어있다고요...

================================

그다음으로 gpt가 많이 말해준 ..

  1. 재설치를 하는 방법 !

pip uninstall alembic flask-migrate
pip install alembic flask-migrate

이걸 해봤는데도 안됐다..

  1. config.py 설정이 제대로 되어있는지 확인

    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://호스트:유저명@localhost:3306/db이름'

네 제대로 되어있어요..

  1. app.py에 시작부분에 추가하기

    import pymysql
    pymysql.install_as_MySQLdb()

네 원래 되어있었어요...

  1. 가상환경 재설정

1) 가상환경 비활성화
deactivate
2) 파이썬 경로 확인
where python
3) code를 연 폴더랑 가장 비슷한 경로에 python있는걸 사용하면 된다
4) 그 경로를 복사해서
경로 -m venv myenv로 생성
5) 폴더를 만들겠냐고 뜨면 yes누르면 되고, 만약 안 떴다고해도 왼쪽에 보면 myenv 폴더가 생성되어있을거다
6) 가상환경 활성화
myenv\Scripts\activate
7) requirements.txt 파일을 사용하여 패키지 설치
pip install -r requirements.txt

ㅎㅎ 이것도 여러번했는데도..안되고

db문제인가 싶어서

mysql -u 내가만든유저명 -p -h localhost

cmd창에서 실행했는데 (db확인위해)
실행이 안되길래

1) MySQL 설치 경로 확인
일반적으로 C:\Program Files\MySQL\MySQL Server X.X\bin'
2) 제어판 -> 시스템 -> 고급 시스템 설정 -> 환경 변수를 열고, 시스템 변수에서 Path를 선택하여 편집
3) 새로 만들기를 클릭하고, MySQL의 bin 디렉토리 경로를 추가
4) cmd 재실행

하니 들어가졌고 db도 제대로 있는걸 확인

하.......뭐가 문제니

import pymysql
try:
connection = pymysql.connect(
host='localhost',
user='',
password='',
database=''
)
print("Connection successful")
except Exception as e:
print(f"Connection failed: {e}")
finally:
if 'connection' in locals() and connection.open:
connection.close()

connection successful이 뜨는걸 확인

gpt왈 :
pymysql을 직접 사용하는 테스트에서는 성공적으로 데이터베이스에 연결되었기 때문에, 문제는 Flask 애플리케이션에서 SQLAlchemy와 pymysql을 연결하는 과정에서 발생하는 것 같습니다.

SQLAlchemy와 pymysql의 연결이 문제구나...

도저히 안되겠어서 다음날에 다시 시도해봄
-> 응 똑같아..

from sqlalchemy import create_engine
import pymysql

  • pymysql을 사용하여 데이터베이스에 연결
    try:
    connection = pymysql.connect(
    host='localhost',
    user='user1',
    password='user1',
    database='user2_db'
    )
    print("Connection successful")
    except Exception as e:
    print(f"Connection failed: {e}")
    finally:
    if 'connection' in locals() and connection.open:
    connection.close()
  • 데이터베이스 연결 정보
    username = 'user1'
    password = 'user1'
    host = 'localhost'
    port = '3306' # MySQL 기본 포트
    database = 'user2_db'
  • 연결 문자열 생성
    connection_string = f'mysql+pymysql://{username}:{password}@{host}:{port}/{database}'
    try:
    engine = create_engine(connection_string)
  • 연결 확인
    with engine.connect() as connection:
    result = connection.execute("SELECT 'Hello, world!'")
    print(result.fetchone())
    except Exception as e:
    print(f"SQLAlchemy connection failed: {e}")

다시 실행해봤고
Connection successful
SQLAlchemy connection failed: Can't load plugin: sqlalchemy.dialects:mysql.pymysql

또 똑같은 오류

pip uninstall pymysql sqlalchemy
pip install pymysql sqlalchemy

속는셈 치고 재설치를 해봤다

Connection successful
SQLAlchemy connection failed: Not an executable object: "SELECT 'Hello, world!'"

그랬더니 이게 떴고
gpt가 문장이 확실하지 않으니 다른 코드로 해보라는데
아 몰라 하고
flask db init하니깐 오류가 안뜸
flask db migrate -m "migration"
flask db upgrade까지 완료하였고

python app.py를 하니깐
실행 완료.

이게 뭐지? 하하
그냥 노트북 과부하가 아니였나싶다...

0개의 댓글