[Flask] 회원 기능 구현하기 <4 : 회원정보 구현하기>
0. 이전글
1. 구현점
- 로그인 되어있을 경우 session에 있는 회원 아이디 읽기
- 읽어들인 id로 관계형 db에서 검색하기
- db의 정보를 리턴하기
2. 코드
이하의 코드는 로그인이 되어있을 경우를 상정한다.
2.1 회원 정보 검색 함수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def get_user_info(db, session):
row = None
try:
if not db.open: #
db.ping(reconnect=True)
id_in_session = session['username']
sql = """
SELECT * FROM users WHERE name = %s;
"""
cursor = db.cursor()
cursor.execute(sql, (id_in_session))
row = cursor.fetchone()
print(row)
except Exception as e:
print("접속오류", e)
finally:
if db:
db.close()
print('종료')
return row
세션에 아이디가 있다면 세션에서 username을 가져와 id_in_session
에 할당해준다.
검색한 아이디로 MySQL에서 검색해 쿼리를 실행해주고
cursor.fetchone()
로 읽어들인 정보를 출력해준다.
이때 이 과정에서 오류가 일어난다면 “접속 오류”를 로그로 찍어준다.
2.2 엔드포인트 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bp_userinfo= Blueprint("user_info", __name__, url_prefix = "/userinfo")
@bp_userinfo.route('/' , methods = ['GET'])
def userinfo():
print(session)
user_data = get_user_info(db,session)
try:
if user_data:
return jsonify(user_data), 200
else:
return jsonify({"error": "오류가 발생했습니다."}), 500
except Exception as e:
print("error : ", e)
return jsonify({"error": e}), 500
단순회 회원정보를 저장만 하기 때문에 “GET” 메서드를 사용해준다.
user_data
에 위 함수에서 읽어들인 row 값을 저장해주고
만약 user_data
가 존재한다면 해당 row을 json으로 바꿔 반환한다.
user_data
가 존재하지 않는다면 error: 오류가 발생했습니다.
를 json으로 반환한다.
이 try - except 과정에서 오류가 난다면 에러 로그를 찍어준다.
3. 실행결과
먼저 로그인해 session에 회원 정보를 저장해준다.
GET 요청을 날려 회원 정보를 읽어보자
회원 아이디, 메일, 회원가입일, 랭크를 반환한다
로그도 정상적으로 띄워준다.
4. Next
다음엔 MySQL을 사용해 게시판 기능을 제작해보겠다.