Node.js에서 SQLite3를 연동하여 사용하려면, SQLite3 데이터베이스를 다룰 수 있는 Node.js 모듈을 설치하고, 이를 사용하여 데이터베이스를 연결하고, 쿼리를 실행하는 방법을 알아야 합니다. SQLite3는 파일 기반의 경량 SQL 데이터베이스 엔진으로, Node.js 환경에서 간편하게 사용할 수 있습니다. 아래는 Node.js에서 SQLite3를 연동하고 사용하는 방법을 단계별로 설명한 가이드입니다.
1. 프로젝트 설정 및 SQLite3 설치
먼저, Node.js 프로젝트를 설정하고 sqlite3
모듈을 설치합니다.
- 프로젝트 디렉토리 생성 및 초기화
mkdir my-sqlite-project
cd my-sqlite-project
npm init -y
이 명령어는 my-sqlite-project
라는 디렉토리를 생성하고, 해당 디렉토리에서 기본 package.json
파일을 생성합니다.
- SQLite3 모듈 설치
npm install sqlite3
이 명령어는 sqlite3
모듈을 설치하여, SQLite3 데이터베이스와 상호작용할 수 있도록 합니다.
2. SQLite3 데이터베이스 연결
이제, Node.js 코드에서 SQLite3 데이터베이스에 연결하는 방법을 알아보겠습니다.
데이터베이스 연결 코드 작성
프로젝트 루트 디렉토리에 app.js
파일을 생성하고, 다음과 같이 코드를 작성합니다:
const sqlite3 = require('sqlite3').verbose();
// SQLite 데이터베이스 파일 생성 또는 연결
let db = new sqlite3.Database('./my-database.db', (err) => {
if (err) {
console.error('Failed to connect to the database:', err.message);
return;
}
console.log('Connected to the SQLite database.');
});
위 코드에서 sqlite3.Database
생성자는 데이터베이스 파일에 연결합니다. 파일이 존재하지 않으면 새로 생성합니다.
3. 데이터베이스 작업 수행
이제 데이터베이스에 테이블을 생성하고, 데이터를 삽입하고, 조회하는 작업을 수행해보겠습니다.
- 테이블 생성
// 테이블 생성
db.run(`CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
)`, (err) => {
if (err) {
console.error('Failed to create table:', err.message);
return;
}
console.log('Table created successfully.');
});
위 코드는 users
라는 테이블을 생성합니다. 테이블에는 id
, name
, email
이라는 세 개의 필드가 있으며, id
는 자동 증가하는 기본 키로 설정됩니다.
- 데이터 삽입
// 데이터 삽입
db.run(`INSERT INTO users (name, email) VALUES (?, ?)`, ['John Doe', 'john@example.com'], function(err) {
if (err) {
console.error('Failed to insert data:', err.message);
return;
}
console.log(`A row has been inserted with rowid ${this.lastID}`);
});
이 코드는 users
테이블에 새 사용자 데이터를 삽입합니다. ?
는 삽입할 값의 자리 표시자로, 두 번째 인수 배열로 실제 값을 전달합니다.
- 데이터 조회
// 데이터 조회
db.all(`SELECT * FROM users`, [], (err, rows) => {
if (err) {
console.error('Failed to retrieve data:', err.message);
return;
}
rows.forEach((row) => {
console.log(row);
});
});
이 코드는 users
테이블에서 모든 행을 조회하고, 결과를 출력합니다. db.all
메서드는 쿼리 결과의 모든 행을 배열로 반환합니다.
4. 데이터베이스 연결 종료
모든 작업이 끝난 후에는 데이터베이스 연결을 종료해야 합니다.
// 데이터베이스 연결 종료
db.close((err) => {
if (err) {
console.error('Failed to close the database connection:', err.message);
return;
}
console.log('Closed the database connection.');
});
이 코드는 데이터베이스 연결을 안전하게 종료합니다.
5. 전체 코드 예제
전체적인 흐름을 이해하기 위해 위의 모든 단계를 포함한 전체 코드를 하나의 파일로 작성해 보겠습니다.
const sqlite3 = require('sqlite3').verbose();
// SQLite 데이터베이스 파일 생성 또는 연결
let db = new sqlite3.Database('./my-database.db', (err) => {
if (err) {
console.error('Failed to connect to the database:', err.message);
return;
}
console.log('Connected to the SQLite database.');
});
// 테이블 생성
db.run(`CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
)`, (err) => {
if (err) {
console.error('Failed to create table:', err.message);
return;
}
console.log('Table created successfully.');
// 데이터 삽입
db.run(`INSERT INTO users (name, email) VALUES (?, ?)`, ['John Doe', 'john@example.com'], function(err) {
if (err) {
console.error('Failed to insert data:', err.message);
return;
}
console.log(`A row has been inserted with rowid ${this.lastID}`);
// 데이터 조회
db.all(`SELECT * FROM users`, [], (err, rows) => {
if (err) {
console.error('Failed to retrieve data:', err.message);
return;
}
rows.forEach((row) => {
console.log(row);
});
// 데이터베이스 연결 종료
db.close((err) => {
if (err) {
console.error('Failed to close the database connection:', err.message);
return;
}
console.log('Closed the database connection.');
});
});
});
});
이 코드는 다음과 같은 순서로 실행됩니다:
- SQLite3 데이터베이스에 연결합니다.
users
테이블을 생성합니다.- 새 사용자 데이터를 삽입합니다.
- 테이블에서 모든 데이터를 조회합니다.
- 데이터베이스 연결을 종료합니다.
6. 추가 팁
- 비동기 처리: SQLite3 모듈은 기본적으로 콜백 기반이므로, Promise 또는 async/await 패턴을 사용하여 비동기 처리를 관리하는 것이 좋습니다. 이를 위해
sqlite3
모듈을sqlite
패키지로 감싸는 것을 고려할 수 있습니다. - 트랜잭션 관리: 중요한 데이터 작업은 트랜잭션으로 감싸서 일관성을 유지해야 합니다.
- 데이터베이스 백업: SQLite3는 파일 기반 데이터베이스이므로 정기적인 백업을 통해 데이터를 보호하는 것이 중요합니다.
이 가이드를 따라 Node.js에서 SQLite3를 연동하고 사용할 수 있습니다. SQLite3는 간단하면서도 강력한 데이터베이스이므로, 많은 로컬 및 소규모 애플리케이션에 적합합니다.
'언어 > Node.js' 카테고리의 다른 글
Node.js CommonJS란 무엇인가? (0) | 2024.06.10 |
---|---|
Node.js 비동기 처리에 대해서 이해하기 (1) | 2024.06.10 |
Node.js 설치하고 Hellow World 첫 프로그램 만들기 (1) | 2024.06.10 |
Node.js 개념과 특징 (1) | 2024.06.10 |
Node.js 설치 및 사용하기 (0) | 2021.08.02 |