sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:mysql.pymysql
과제를 하다말아서 노트북으로 해야지 ~했는데
오류때문에 몇시간을 날렸는지 모르겠다...
gpt와 많은 대화를 나눴다 ㅠㅠ(이건 쳐봐도 잘안나옴)
workbench로 권한때문에 골머리 싸매다가
권한을 주고 난리를 치니깐 이젠 이 오류가..
첫번째로 물어보는건 설치가 되어있냐였는데
되어있다고요...
pip install만 몇번을 해봤는지 모르겠다 ㅋㅋ
pip install --upgrade sqlalchemy pymysql
호환성 문제때문에 업그레이드를 하라는데 그것도 되어있다고요...
================================
그다음으로 gpt가 많이 말해준 ..
pip uninstall alembic flask-migrate
pip install alembic flask-migrate
이걸 해봤는데도 안됐다..
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://호스트:유저명@localhost:3306/db이름'
네 제대로 되어있어요..
import pymysql
pymysql.install_as_MySQLdb()
네 원래 되어있었어요...
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를 하니깐
실행 완료.
이게 뭐지? 하하
그냥 노트북 과부하가 아니였나싶다...