ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • node.js를 이용하여 mysql에 접속하기
    IT&개발/node.js 2015. 8. 13. 19:47
    728x90
    반응형

    서버 사이드 언어라면 mysql을 연동할 수 있는것이 당연하다. 

    일단 여기서 전제는 mysql을 다들 쓰실줄 아는 것으로 하겠다. 

    노드에서는 mysql의 접속을 도와줄 mysql이라는 간단한 모듈이 있다. 

    "mysql"모듈을이용하여 mysql에 접속해보겠다.


    처음엔 cmd 창에서 mysql을 실행하겠다. 이미 데이터베이스와 사용자 id는 생성되어있습니다.

    mysql 실행

    mysql 접속하여 현재 상태를 확인해 보겠습니다. 


    현재 mysql에 생성된 데이터베이스 목록들입니다.



    <프로젝트 생성>

    1. package.json 작성

    우리는 mysql 모듈만 사용할 것입니다. "mysql":"*"를 작성한 뒤 모듈을 추가합니다. 

    오른쪽 클릭후 [run npm update]를 누르시면 됩니다.

    2. 그리고 app.js 를 생성하여 코딩을 할 것입니다.

    3. app.js 코딩

    /**
    * Created by HOME on 2015-08-13.
    */
    // 1. 필요한 module require - mysql
    var sql = require("mysql");
    // 2. mysql 접속 경로 설정
    //option 객체에 데이터들을 넣는다. 접속은 내 pc로 하기 때문에 localhost이며
    //포트번호는 mysql이 지정된 3306을 사용한다.
    //그리고 미리 만들어 놓았던 아이디와 비밀번호인 nodejs를 이용하여
    //library 데이터베이스에 접근한다. 이것은 내가 미리 만들어 놓은 것들이다.
    var option = {
    host: "localhost",
    port: 3306,
    user : "nodejs",
    password : "nodejs",
    database : "library"
    };
    // 3. 접속하는 객체생성
    //sql 객체에서 연결을 담당하는 객체에 option을 넣으며 연결담당 객체를 받는다.
    var conn = sql.createConnection(option);
    // 4. mysql 접속
    conn.connect();
    // 5. mysql 쿼리문과 콜백함수 정의
    //잊지마라 노드는 비동기처리를 한다. 그렇기에 작업을 받고 sql에 던저놓고 다른 일을 한다.
    //그리고 그 일이 끝났을 때 이벤트가 발생하며 다음에 정의된 함수가 실행되게 되어있다.
    //일단은 DB에 접속하기 위한 코드이므로 출력을 해보겠다.
    conn.query("select * from books",function(err,results,field){
    console.log(err);
    console.log(results);
    console.log(field);
    conn.end();
    });


    4. 콘솔창 확인

    많은 자료들이 콘솔에 출력되었다.





    만약 쿼리문이나 중간에 오류가 있다면 일부러 password->passward로 고쳐보았다. 이것은 제가 실습중에 실제로 한 실수이며 오류코드를 찾는데 한참 결렸니다. 이것으로 보아 이 option을 넘기는 값의 변수이름까지 정해져 있다고 보아도 무방할 것입니다. 이것은 변수들을 mysql에 비교 대입하기 때문에 값뿐만 아니라 key값까지 조심해야 합니다.



    결과창은 에러가 출력 됩니다. 이것은 결과값이 err에 들어가고 이것을 콘솔창에 찍었기 때문입니다.




    각자 쿼리문은 알아서 잘 sql문에 맞게 작성하시면 올바르게 나오니 걱정 마시구요. 하지만 이런 코드를 작성하였을때 한가지 문제점이 있습니다. 그것은 바로 연결을 할때 시간이 오래걸리는 점입니다. 사용자가 적다면 이것은 크게 문제시 되지 않지만 만약 사용자가 많다면 문제가 발생할 것입니다. 이런 문제점을 예방하기 위하여 mysql은 DB Pool이라는 개념이 존재합니다. 이것은 미리 mysql과 연결되어 있는 connection을 만들어서 사용자가 요청이 들어오면 이것을 할당해주고 나중에 반납하는 형식으로 하여서 맨처음 DB Pool을 생성할 때에만 시간이 소요되며 결과적으로 연결 시간을 절약할 수 있습니다. 이것에 대한 방법은 다음 시간에 알아보도록 하겠습니다.






    반응형

    댓글

Designed by Tistory.