글쓰는 개발자
[업비트/차트데이터수집] 2단계 데이터베이스 연동 본문
DB 설계가 완료되고 해당 설계대로 테이블이 만들어졌다.
업비트에서 데이터를 받아오기 전에 DB 연동을 하고 데이터가 제대로 추가되는지 확인 해야한다.
서버는 nodeJS로 구현하고 DB연동에는 node용 orm인 sequelize를 사용할 예정이다.
mysql, sequelize 라이브러리와 cli를 인스톨한다.
npm install sequelize sequelize-cli mysql2
db 연결 config와 models 초기 폴더 및 파일 생성을 위해 sequelize init 명령을 실행한다.
npx sequelize init
그럼 DB 접속정보가 담긴 config/config.js 파일, 모델 시작관련 파일인 models/index.js 파일 초기 데이터를 적재하기 위한 seeders 폴더가 자동생성된다.
config/config.js 파일에 내 DB의 접속 정보를 기입한다.
{
"development": {
"username": <DB ID>,
"password": <DB 패스워드>,
"database": <DB명>,
"host": <DB IP>,
"port": <DB PORT>,
"dialect": "mysql"
},
...
}
환경변수에 따라 development, test, production으로 구분해서 DB 접속정보를 관리할 수 있다.
ORM으로 DB에 접근하기 위해 models/<테이블모델 JS 파일>을 생성한다.
나의 경우 market 테이블에 접근하기 위해 market.js 파일을 생성하였다.
market.js 파일에는 market 테이블의 명세를 작성한다.
'use strict';
module.exports = (sequelize, DataTypes) => {
const Market = sequelize.define('Market', {
id: {
type: DataTypes.INTEGER,
primaryKey: true
},
korean_name: DataTypes.STRING,
english_name: DataTypes.STRING,
}, {
timestamps: false,
freezeTableName: true,
tablename: 'market'
});
Market.associate = function(models) {
// associations can be defined here
};
return Market;
};
위 옵션중 timestamps 를 false로 하지 않으면 createAt, updateAt 필드를 테이블에 무조건 넣어주어야 하고 기존의 테이블 이름은 자동으로 Model이름에 s가 붙은 markets 가 된다.
테이블 이름을 내 마음대로 정의하기 위해서는 freezeTableName 파라미터를 true로 하고 내가 사용할 테이블명을 tablename 파라미터의 값으로 정해두어야 한다.
만약 내 테이블 명이 markets 라면 앞의 두개의 필드를 제거해도 괜찮다.
DB 접속정보와 모델이 모두 제대로 기입되었다면 이제 DB에 접속해서 데이터를 삽입하는 테스트 노드 프로그램이 필요하다. 추후에도 많은 양의 데이터를 한번에 입력해야 하기 때문에 bulkCreate 문을 사용해서 데이터 삽입을 테스트 했다.
const models = require("./models");
models.Market.bulkCreate([
{ id: "KRW-ABC", korean_name: "테스트", english_name: "test" }
]).then(console.log);
테스트용 프로그램을 만들어 실행하면 해당 명령의 실행결과가 콘솔창에 표시된다.
DB에 들어가보면 데이터가 제대로 삽입된것을 확인할수 있다.
'IT 서비스 제작과정 > 개발' 카테고리의 다른 글
유튜브 다운로드 프로그램 웹 서빙 (0) | 2024.04.30 |
---|---|
유튜브 영상 추출 다운로드 프로그램 개발 (0) | 2024.04.30 |
[업비트/차트데이터수집] 1단계 데이터베이스 설계 (0) | 2024.04.14 |
[업비트/코인] 급등종목 모니터링 시스템 구현 (0) | 2024.04.13 |
[비트코인] 업비트 실시간 시세 받아오기 (0) | 2024.04.12 |