-
[Node.js] Node.js 환경에서 SQLite3 활용하기Javascript/Node.js 2022. 4. 5. 22:06
https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Node.js_logo.svg/1200px-Node.js_logo.svg.png 현재 개발중인 Electron 기반의 에디터를 제작하는데 DB를 사용할 필요가 생겼다.
처음에는 DB없이 JSON 파일을 저장하고 파싱해오는 방식을 쓰려했는데, 기능이 추가될 때마다 JSON 파일이 여러개로 늘어나 관리하기 어려울 것 같아 SQL을 부랴부랴 공부했다.
떄문에 처음엔 MySQL을 사용하려 했으나, 진행중인 프로젝트에는 MySQL에 비해 sqlite3를 활용하는 것이 더 적합하다는 생각이 들어 sqlite3를 적용하는 방법을 알아보게 되었다.
sqlite3
Asynchronous, non-blocking SQLite3 bindings. Latest version: 5.0.2, last published: a year ago. Start using sqlite3 in your project by running `npm i sqlite3`. There are 2659 other projects in the npm registry using sqlite3.
www.npmjs.com
npm을 찾아보니 sqlite3 패키지가 있었고, 명령어를 입력해 설치해주었다.
npm install i sqlite3
명령어를 입력하면 위와 같은 과정을 거쳐 sqlite3 패키지의 설치가 완료된다. 다음으로 sql 테이블을 시각적으로 보여줄 수 있는 확장 프로그램을 설치해줬다.
확실히 콘솔로만 볼 때보다, 정리된 표 형태가 훨씬 눈에 잘 들어온다.
나는 SQLite 확장 프로그램을 설치했는데, SQLTools나 다른 확장 프로그램을 써도 무방할 것 같다.
Extensions 메뉴에서 SQlLite를 검색하고 install 해줬다. 이제 npm에서 제공하는 예제 코드를 실행해보자.
해당 코드를 복사/붙여넣기 혹은 작성한 후 콘솔에 node [파일명].js 를 입력하면 node 환경에서 코드를 실행할 수 있다.
만일 코드가 실행되지 않는다면, 파일명이 맞는지, node.js가 설치되었는지 확인하자.
var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(':memory:'); db.serialize(function() { db.run("CREATE TABLE lorem (info TEXT)"); var stmt = db.prepare("INSERT INTO lorem VALUES (?)"); for (var i = 0; i < 10; i++) { stmt.run("Ipsum " + i); } stmt.finalize(); db.each("SELECT rowid AS id, info FROM lorem", function(err, row) { console.log(row.id + ": " + row.info); }); }); db.close();
아래 콘솔에 10번까지 결과가 출력된다. 이번에는 직접 DB를 실행하고, 아까 설치했던 확장 프로그램으로 테이블을 열어보자.
방금 실행한 코드의 2번째 줄에 아래 코드를 붙여넣기 한다.
const db = new sqlite3.Database('./db/project.db', sqlite3.OPEN_READWRITE, (err) => { if (err) { console.log(err); } else { console.log("sqlite3 done"); } });
현재 작업 중인 폴더 내에 db 폴더를 생성하고, 폴더 아래에 project.db 파일을 생성한 후 node [파일명].js를 터미널에 입력해 코드를 실행시켜보자.
실제로는 sqlite3 실행문을 이용해 db를 생성해야 하지만 간단한 테스트용이므로 직접 파일을 만들어 진행한다.
정상적으로 실행됐다면 sqlite done 이라는 log와 아까같은 10번까지의 데이터가 출력될 것이다. project.db와 파일의 구조 정상적으로 실행되었다면 좌측 VScode 내 파일탐색기에서 project.db 파일을 우클릭하고, Open Database를 클릭해준다.
SQLite Explorer 메뉴가 새로 생긴 것을 알 수 있다. 위 SQLite Explorer 메뉴에서 project.db 옆의 화살표를 클릭하고, lorem 테이블을 우클릭 한 후 Open Table 메뉴를 클릭하면 아래와 같은 결과가 나올 것이다.
위와 같이 나오면 성공이다. 이런 식으로 세팅해두면 sql 작업 내용을 vscode 상에서도 시각적으로 확인할 수 있으니 작업시에 유용할 것 같다.
차후 포스팅에서는 node.js를 이용해 sqlite3에 SQL문을 이용해 데이터를 CRUD하는 방법에 대해 다뤄보겠다.