앞서 만들었던 sign-up 엔드포인트에 mysql을 연동해보자
1. 데이터베이스 생성
$ mysql -u root -p
mysql> create database flask_test;
성공적으로 데이터베이스가 생성되었다.
2. SQLAlchemy, MySQL-Connector 설치
SQLAlchemy는 파이썬 코드에서 DB와 연결하기 위해 사용되는 라이브러리이다.
MySQL-Connector는 파이썬에서 DB를 사용하기 위한 공식 API이다.
pip install sqlalchemy
pip install mysql-connector-python
3. config.py 작성하기
config.py는 각 프로젝트 환경에 맞는 설정을 따로 관리해주는 파일이다. 주로 .gitignore 파일에 추가해 git repository에 포함되지 않게 관리해준다.
config.py
db = {
'user' : 'root',
'password' : '[mysql 비밀번호]',
'host' : '127.0.0.1',
'port' : '3306',
'database' : 'flask_test'
}
DB_URL = f"mysql+mysqlconnector://{db['user']}:{db['password']}@{db['host']}:{db['port']}/{db['database']}?charset=utf8"
4. users 테이블 생성하기
사용자의 email과 password를 저장할 테이블을 생성한다. 다시 mysql 서버로 접속해준다
$ mysql -u root -p
mysql> use flask_test;
PK, email, password를 가지고 있는 users 테이블을 생성해준다
Database changed
mysql> create table users(
-> id INT NOT NULL AUTO_INCREMENT,
-> email VARCHAR(200),
-> password VARCHAR(200),
-> PRIMARY KEY(id)
-> );
Query OK, 0 rows affected (0.02 sec)
생성된 테이블을 한번 확인해준다
desc users;
앞서 작성했던 sign-up 엔드포인트를 수정해준다
from flask import Flask, jsonify, request
from sqlalchemy import create_engine, text
def create_app(test_config = None):
app = Flask(__name__)
app.config.from_pyfile('config.py')
database = create_engine(app.config['DB_URL'], encoding = 'utf-8')
app.database = database
@app.route('/sign-up', methods = ['POST'])
def sign_up():
user = request.json
user_id = app.database.execute(text("""
INSERT INTO users (
email,
password
) VALUES (
:email,
:password
)
"""), user).lastrowid
return "", 200
return app
수정한 endpoint를 다시 호출한다
연동된 데이터베이스에가서 데이터가 잘 들어왔는지 확인한다.
역시는 역시네요