Flask + Flask-SQLAlchemy + MySql 세팅
플라스크를 이용해서 웹서비스 프로젝트를 만들면서 정리를 한다.
환경
- macOS High Sierra
- PyCharm 2017.3
- Python 3.6 (virtualenv)
테스트 코드
http://bablabs.tistory.com/22?category=654479 밥대상 블로그의 코드를 참고해서 만들었다.
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Column
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://사용자:비밀번호@도메인:3306/서비스이름'
db = SQLAlchemy(app)
class ServiceUser(db.Model):
id = Column(db.Integer, nullable=False, primary_key=True)
name = Column(db.String(255), nullable=False, default='')
nick_name = Column(db.String(255), nullable=False, default='')
@app.route('/')
def hello_world():
row = ServiceUser.query.filter_by(id=84723726).first()
print(row.nick_name)
return (row.nick_name, 200)
if __name__ == '__main__':
app.run()
설정
프로젝트 인터프리터에 필요한 패키지를 추가야한다.
필요한 패키지는
- Flask-SQLAlchemy
- SQLAlchemy
- PyMySQL
- mysqlclient
이다.
pip install Flask-SQLAlchemy 처럼 명령어로 설치를 할 수도 있지만, 파이참에서 추가를 했다.
문제
설치를 하다보면 문제가 발생한다.
MySQL 연결과 관련된 문제인데 먼저 mysql-connector-c 를 설치하자
참고 : https://stackoverflow.com/questions/45628814/how-do-you-install-mysql-for-flask
brew install mysql-connector-c
설치를 한 이후에도 문제가 발생한다.
mysqlclient 가 pip 으로 설치가 안될것이다. 위에 필요한 패키지에서 mysqlclient 빼고 다 설치가 된다.
이것은 맥에서만 그런것이고, mysqlclient 위키에 문제와 해결 방법이 나와있다.
https://github.com/PyMySQL/mysqlclient-python
mysql_config 파일에
libs="$libs -l "
을 아래와 같이 변경을 해준다.
libs="$libs -lmysqlclient -lssl -lcrypto"
mysql_config 파일이 어디있는건가 찾지 못해서 다시 검색을 통해 찾았다.
파일의 풀 path는 /usr/local/bin/mysql_config 이다. 다시한번 이야기 하면 mysql-connector-c 를 설치해야 생긴다.
수정을 한 후에 mysqlclient 패키지를 다시 설치한다. 이번엔 제대로 설치된다.
세팅은 이제 끝. 코딩을 준비완료.
참고
https://www.jianshu.com/p/30bcc885411f
https://stackoverflow.com/questions/45628814/how-do-you-install-mysql-for-flask
https://github.com/PyMySQL/mysqlclient-python