공부/프로그래밍

Node.js MariaDB 랑 연동하기

demonic_ 2015. 6. 23. 15:45

버전

express : 4.x 

node.js  : v0.12.4



MariaDB 연동방식은 크게 2가지 방법으로 기재하겠습니다

그 차이를 저는 connection pool 을 쓸것인가 말것인가로 보았습니다.(물론 내부 아키택쳐상 그럴리야 없겠지만, 어쩃든 저는 pool 방식을 선호하므로)


그리고 아쉽게도 transaction 처리에대해서는 찾지 못했습니다. 이부분에 대해서 알고 계신분은 저에게 알려주시면 감사하겠습니다 ㅠㅠ


이 글은 mariasql 0.1.24 버전에만 해당하는 글입니다. 잘 확인하시고 사용해주세요


참고로 mysql 은 있는거 같더라구요. 이는 조대협님의 블로그를 통해서 확인했었습니다.

(링크 : 조대협의 블로그 - 빠르게 훝어보는 node,js #8 mySQL 연동)


mariasql 을 설치하시려면 다음의 2개를 꼭 설치해야 합니다.

( 참고 사이트 : http://stackoverflow.com/questions/21365714/nodejs-error-installing-with-npm
 : 윈도우 7에서 할경우에는 파이썬 2.7 설치하고, 
     Microsoft Visual Studio Express 2012 for Windows Desktop 설치해야함
 : 리눅스는 python 2.7 설치하고 make하고 
     A proper C/C++ compiler toolchain, like GCC

)


1. mariaSql 모듈로 개발   (관련링크)


MariaDB 를 연동할때는 MariaSql 로 연동해야 합니다 그러므로 npm install 에서 mariaSql 로 실행합니다.

다음은 소스 부분입니다.

var mariaSql = require('mariasql');

conn = new mariaSql();

conn.connect({

 host : 호스트주소

, port : 포트번호

, user : 유저명

, password : 비밀번호

, database : 데이터베이스명

, db : DB명

});


// DB를 연결합니다.

conn.on('connect', function(){

console.log('MariaDB connected');    // 접속에 성공한 경우 이런 안내문구가 떠요

}).on('error', function(err){

console.log('MariaDB error : ' + err);

}).on('close', function(hadError){        

console.log('MariaDB closed');     

});


// 쿼리를 실행합니다,.
conn.query('select * from test where test1=:test1 ', {test1 : '1'})
.on('result', function(res){
res.on('row', function(row){
//console.log('Result row : ' + inspect(row));
console.log('Result row : ' + row);
})
.on('error', function(err){
//console.log('Result error : ' + inspect(err));
console.log('Result error : ' + err);
})
.on('end', function(info){
console.log('Result finished successfully');
});
});

conn.end();    // DB연결을 종료



2. my_pool_sql 모듈로 개발(mariaSql 가 설치되어있어야 하고 0.1.24 버전에서만 가능)   (관련링크)  - 저는 이쪽 기능을 선호함


Mysql 은 pool 을 생성해주는 createPool() 이 있지만 mariaDB 에는 없더라구요. 그래서 my_pool_sql 을 사용합니다. 접속 방식은 비슷해요.


var mypoolsql = require('my_pool_sql');    

global.pool = new mypoolsql(100,{        // 이렇게 하면 글로벌에 변수가 담겨서 아무곳에서나 쓸수있어요

  host : 호스트주소

, port : 포트번호

, user : 유저명

, password : 비밀번호

, database : 데이터베이스명

, db : DB명

});


// function (쿼리문, 파라미터, 결과func) 이렇게들어갑니다

pool.query('select * from test where test1=:test1 ', {test1 : '1'}, function(err, results){           

   console.log(results.rows); // 조회 결과 

   console.log(results.info); // 결과정보          

   console.log(results.info.numRows); // 카운터 수 

});