MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

Sequelizeを使ってNode.jsでMySQLテーブルを作成する方法


Sequelizeとは

Sequelizeは、PromiseベースのNode.js向けORM(Object-Relational Mapping)ライブラリです。PostgreSQL、MySQL、MariaDB、SQLite、Microsoft SQL Serverなど、主要なリレーショナルデータベースに幅広く対応しており、SQLを直接書かずにJavaScriptだけでデータベース操作を行えます。

Sequelizeの主な機能は以下の通りです。

  • トランザクションサポート

  • リレーション(モデル間の関連付け)

  • Eager Loading / Lazy Loading(即時読み込み・遅延読み込み)

  • リードレプリケーション など

SequelizeでMySQLに接続する

まず、Sequelizeを使ってNode.jsとMySQLの間に接続を確立する必要があります。事前に以下のコマンドで必要なパッケージをインストールしておきましょう。

npm install sequelize mysql2

接続が確立できたら、次の3つのファイルを作成します。それぞれ指定されたフォルダ構成で配置してください。

  • SequelizeDemo > app.js
    アプリケーションのエントリポイントとなるルートファイルです。実際の処理ロジックを記述します。

  • SequelizeDemo > utils > database.js
    MySQLへの接続情報をすべて管理するファイルです。

  • SequelizeDemo > models > user.js
    モデル(テーブル)の定義情報を格納するファイルです。

実装例

1. database.js の設定

データベース名、ユーザー名、パスワードなど、ご自身の環境に合わせて接続情報を入力してください。

const Sequelize = require('sequelize');

const sequelize = new Sequelize(
    'YOUR_DB_NAME',      // データベース名
    'YOUR_DB_USER_NAME', // ユーザー名(例: root)
    'YOUR_DB_PASSWORD',  // パスワード
    {
        dialect: 'mysql',
        host: 'localhost'
    }
);

module.exports = sequelize;

2. user.js の設定

このファイルでは、モデルとテーブルのマッピングを定義します。カラム名やデータ型、制約をここで指定できます。

const Sequelize = require('sequelize');
const sequelize = require('../utils/database');

const User = sequelize.define('user', {
    // カラム1:user_id
    user_id: {
        type: Sequelize.INTEGER,   // 整数型
        autoIncrement: true,       // 自動採番
        allowNull: false,          // NULLを許可しない
        primaryKey: true           // 主キーとしてユーザーを一意に識別
    },

    // カラム2:name
    name: { type: Sequelize.STRING, allowNull: false },

    // カラム3:email
    email: { type: Sequelize.STRING, allowNull: false },

    // タイムスタンプ
    createdAt: Sequelize.DATE,
    updatedAt: Sequelize.DATE,
});

module.exports = User;

3. app.js の設定

モデルをもとに実際のテーブルを作成するには、sync()メソッドを使用します。用途に応じて2種類の使い分けが可能です。

  • sync() メソッド:テーブルが存在しない場合のみ作成します。すでに存在する場合は何もせず、既存のテーブルは上書きされません。

  • sync({ force: true }) メソッド:テーブルが存在しなければ新規作成し、すでに存在する場合は一度削除してから再作成します。既存データは失われるため注意してください。

// データベース接続の読み込み
const sequelize = require('./database');

// ユーザーモデルの読み込み
const User = require('./models/user');

// user.jsで定義したすべてのテーブルを作成
sequelize.sync();

// 動作確認用:user.jsを変更してから実行すると、
// 既存テーブルが上書き(再作成)されることを確認できます。
// sequelize.sync({ force: true });

実行結果

プログラムを実行すると、コンソールには次のような出力が表示されます。

C:\Users\SequelizeDemo> node app.js
Executing (default): CREATE TABLE IF NOT EXISTS `users` (`user_id` INTEGER NOT NULL auto_increment , `name` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL, `createdAt` DATETIME, `updatedAt` DATETIME, PRIMARY KEY (`user_id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `users`

実行後、MySQL側でデータベースを確認してみてください。usersテーブルが自動的に作成されていることがわかります。これで、Sequelizeを通じてNode.jsアプリケーションからMySQLのテーブルを自由に操作できるようになりました。

  1. 【Spring Boot】HibernateでMySQLのテーブルを自動作成する方法

    Spring BootとHibernateを組み合わせると、エンティティクラスから自動的にMySQLのテーブルを作成できます。本記事では、application.propertiesの設定だけでテーブルを自動生成する手順を、実際のコード例とともにわかりやすく解説します。1. application.propertiesの設定テーブルを自動作成するには、まずapplication.propertiesに以下の1行を追加します。spring.jpa.hibernate.ddl-auto=updateddl-auto=updateを指定すると、アプリケーションの起動時にHibernateがエンティテ

  2. TkinterのTreeviewウィジェットを使ってテーブルを作成する方法

    テーブルとは、データを行と列の形式で整理して表示する要素です。アプリケーションにGUIのテーブルを実装し、NumPyやPandas、Matplotlibなどの他のPythonライブラリと組み合わせてデータを操作するケースを考えてみましょう。TkinterにはTreeviewウィジェットが用意されており、これを使用すると表を描画してその中にデータを挿入することができます。Treeviewウィジェットは、Treeview(parent, column, **options)というコンストラクタを定義することで構築できます。サンプルコード# 必要なライブラリをインポート from tkinter i