이번에는 유저 요청에따라 동적으로 데이터를 리턴해주려고한다.

 

이를 위해, DBMS를 설치해 데이터를 저장하고, 조건에 맞는 Value 값을 찾아서 회신할 것이다.


1) My sql 설치

sudo apt-get update
sudo apt-get install mysql-server

 

※ 방화벽 설정이 되어있다면, Mysql 포트를 열어주어야 한다. ( 3306 )

 

sudo ufw allow mysql

 

ㅁ 실행 및 DBMS 접속

 

service mysql service
mysql -u root -p

 

ㅁ 데이터베이스 및 유저생성

 

Mysql> CREATE DATABASE USER;
Mysql> CREATE USER 'pyadm'@'localhost' IDENTIFIED BY 'password';

 

ㅁ 권한 부여 및 확인

 

Mysql> GRANT ALL PRIVILEGES ON USER.* to pyadm@localhost;
Mysql> grant all privileges on *.* to 'pyadm'@'localhost';
root> mysql -u pyadm -ppassword

 

2) 데이터 구성

 

ㅁ ID를 KEY 값으로, 이름을 필드로 갖는 user_info 테이블 생성

CREATE table user_info( id int(10) NOT NULL, name char(20) DEFAULT NULL, PRIMARY KEY (id) );

 

ㅁ 테스트 데이터 입력

 

INSERT INTO user_info VALUES(1234,'kim');
INSERT INTO user_info VALUES(123,'Lee');
commit;

 

3) Python - Mysql 연결

 

pip3 iinstall --proxy [proxy_ip] --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org PyMysql

 

ㅁ 테스트 코드 작성 ( 커넥터 설정 및 커서 )

 

import pymysql

user_db = pymysql.connect (
  user='pyadm',
  passwd='password',
  host='localhost',
  db='user',
)

cursor = user_db.cursor()
sql= " select * from user_info"

cursor.execute(sql)
print(cursor.fetchall())

 

4) request 에서 조건값 가져오기

 

http://localhost:80/api/users/1234

 

ㅁ Rest_api 서버 코드 수정

 

@api.route('/api/users/<int:id>')   -- id라는 변수를 만들어 int 값 저장
class HelloWorld(Resource):
  def get(self,id):  -- 멤버 변수 파라미터로 id 설정
    return {"id": id, -- id 변수값
              "name": "kim"}

 

 

5) 가져온 조건값을 DB에 입력하여, 리턴해주도록 수정

 

@api.route('/api/users/<int:id>')
class HelloWorld(Resource):
 def get(self,id):
    cursor = user_db.cursor()
    sql = " select * from user_info where id= " + str(id)
    cursor.execute(sql)
    data=cursor.fetchall()
    return {"id": data[0][0],
              "name": data[0][1]}

 

+ Recent posts