Web Maria DB 데이터 연동 가이드. - smilebulee/infogen_ims GitHub Wiki

데이터 연동 순서

html -> urls.py -> views.py -> app.py


프로젝트 소스 내 참고파일

html

  1. infogen_ims/ifg_front/templates/dili/diliScheduleMgmt.html

py

  1. infogen_ims/ifg_front/dili_api/urls.py
  2. infogen_ims/ifg_front/dili_api/views.py
  3. infogen_ims/api_containers/dili/api/app.py



예시

1. html 파일 내 $.ajaxCall(param, option)을 통해 서버 호출을 시도한다.

        var param = {
            "email" : 'test'
        }

        $.ajaxCall( param, {
             'method' : 'GET',
             'url' : "{% url 'dili_api:getWrkTimeInfoByEml' %}",
             'dataType' : 'json',
             'data' : JSON.stringify(param),
             'async' : false,
             'callbackFn' : function(data, status, xhr){
                console.log("data : ",data)
             }
        });

 

2. ajax호출시 option에 셋팅된 url을 기준으로, urls.py 파일에 정의된 패턴과 비교하여 views.py를 호출한다.

urlpatterns = [
    url(r'^$', views.Dili_api_index.as_view(), name='dili_api'),

    #mariadb 연결 샘플
    url(r'^getWrkTimeInfoByEml/', views.getWrkTimeInfoByEml, name='getWrkTimeInfoByEml')
]

 

3. views.py 파일 내 request 객체를 통해 app.py를 호출한다.

def getWrkTimeInfoByEml(request):
    param = json.loads(request.GET['param'])                //1. 에서 param값에 Setting한 값.

    logger.info("Parameters Logging Start")
    logger.info(param)
    logger.info("Parameters Logging End")

    # api 호출
    r = requests.get('http://dili_api:5006/wrkTimeInfoByEml', json=param)        // requests.get(url,param) 형태로 호출
    logger.info(r)                                                               // 위 requests 객체를 통해 호출한 결과 값.
    logger.info(r.text)
    logger.info(r.json())
    logger.info(json.loads(r.text))
    return JsonResponse(r.json(), safe=False)                                    // 결과값을 JSON형태로 views.py로 리턴.

 

4. app.py 에 정의된 코드에 따라 MariaDB연동 수행.

// 3.의 requests.get(url,param) url 패턴에 일치하는 코드실행. app.py에 정의된 wrkTimeInfoByEml Class를 호출한다.
api.add_resource(wrkTimeInfoByEml,'/wrkTimeInfoByEml')


// 실제 Maria DB 연결 수행되는 부분.
class wrkTimeInfoByEml(Resource): # Mariadb 연결 진행
    def get(self):

        data = request.get_json()                                                // request.get_json() 기능을 통해 views.py에서 전달한 parameter 값.

        logging.debug('================== App Start ==================')
        logging.debug(data)
        logging.debug(data["email"])
        logging.debug('================== App End ==================')

        #requirements pymysql import 후 커넥트 사용
        mysql_con = pymysql.connect(host='218.151.225.142', port=3306, db='IFG_IMS', user='ims2', password='1234',
                                        charset='utf8')
        try:
            with mysql_con.cursor(pymysql.cursors.DictCursor) as cursor:
                #쿼리문 실행 추후 별도 파일분리 구현 필요.
                sql = "SELECT * FROM TB_WRK_TM_MGMT_M WHERE EMP_EMAL_ADDR = '" + data["email"] + "'"
                logging.debug(sql)
                cursor.execute(sql)

        finally:
            mysql_con.close()

        result2 = cursor.fetchall()
        for row in result2:
            logging.debug('====== row====')
            logging.debug(row)
            logging.debug('===============')
        array = list(result2)  # 결과를 리스트로

        return result2
⚠️ **GitHub.com Fallback** ⚠️