Web Maria DB 데이터 연동 가이드. - smilebulee/infogen_ims GitHub Wiki
데이터 연동 순서
html -> urls.py -> views.py -> app.py
프로젝트 소스 내 참고파일
html
- infogen_ims/ifg_front/templates/dili/diliScheduleMgmt.html
py
- infogen_ims/ifg_front/dili_api/urls.py
- infogen_ims/ifg_front/dili_api/views.py
- 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