基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
Sequelize 连接 OceanBase 数据库
更新时间:2026-04-09 14:12:04
功能适用性
Sequelize 适用于 OceanBase 数据库 MySQL 模式。
Sequelize 是一个基于 Promise 的 Node.js ORM 工具,支持 Postgres、MySQL、SQLite 和 SQL Server 等多种数据库。本文将介绍如何使用 Sequelize 连接 OceanBase 数据库的 MySQL 模式。
前提条件
- 已安装 Node.js 14.0.0 或更高版本
- 已安装 npm 或 yarn 包管理器
- 已部署 OceanBase 数据库并且创建了 MySQL 模式租户
- 确保网络连接正常
操作步骤
- 检查 Node.js 和 npm 版本
- 安装必要的依赖
- 获取 OceanBase 数据库连接信息
- 创建并配置项目
- 运行示例程序
步骤一:检查 Node.js 和 npm 版本
打开终端,运行以下命令检查 Node.js 和 npm 的版本:
node -v
npm -v
步骤二:安装必要的依赖
创建项目目录并初始化:
mkdir sequelize-oceanbase-demo cd sequelize-oceanbase-demo npm init -y安装 Sequelize 和 MySQL2 驱动:
npm install sequelize mysql2 # 如果使用 TypeScript npm install -D typescript @types/node @types/sequelize # 初始化 TypeScript 配置 npx tsc --init
步骤三:获取 OceanBase 数据库连接信息
联系 OceanBase 数据库部署人员或者管理员获取相应的数据库连接信息。
mysql -h$host -P$port -u$user_name -p$password -D$database_name
参数说明:
$host:提供 OceanBase 数据库连接 IP$port:提供 OceanBase 数据库连接端口$database_name:需要访问的数据库名称$user_name:提供租户的连接账户$password:提供账户密码
步骤四:创建并配置项目
创建项目结构:
sequelize-oceanbase-demo/ ├── src/ │ ├── models/ │ │ └── index.js │ └── index.js ├── .env └── package.json配置数据库连接:
在项目根目录创建
.env文件:DB_HOST=your_host DB_PORT=2881 DB_USER=your_username DB_PASSWORD=your_password DB_NAME=your_database创建数据库连接:
创建
src/models/index.js文件:require('dotenv').config(); const { Sequelize } = require('sequelize'); const sequelize = new Sequelize( process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, { host: process.env.DB_HOST, dialect: 'mysql', port: process.env.DB_PORT, logging: console.log, // 显示 SQL 查询日志 pool: { max: 5, min: 0, acquire: 30000, idle: 10000 } } ); module.exports = sequelize;测试连接:
创建
src/index.js文件:const sequelize = require('./models/index'); async function testConnection() { try { await sequelize.authenticate(); console.log('连接成功'); } catch (error) { console.error('连接失败:', error); } } testConnection();
步骤五:运行示例程序
定义模型:
const { DataTypes } = require('sequelize'); const User = sequelize.define('User', { username: { type: DataTypes.STRING, allowNull: false }, email: { type: DataTypes.STRING, validate: { isEmail: true } } }, { tableName: 'users' });
完整示例
以下是一个完整的示例,展示如何使用 Sequelize 进行 CRUD 操作:
const { Sequelize, DataTypes } = require('sequelize');
// 1. 创建连接
const sequelize = new Sequelize('database_name', 'username', 'password', {
host: 'oceanbase-host',
port: 2881,
dialect: 'mysql'
});
// 2. 定义模型
const User = sequelize.define('User', {
username: DataTypes.STRING,
email: DataTypes.STRING
});
// 3. 同步模型到数据库
async function syncDatabase() {
try {
await sequelize.sync();
console.log('数据库同步成功');
} catch (error) {
console.error('数据库同步失败:', error);
}
}
// 4. CRUD 操作
async function crudOperations() {
// 创建
const user = await User.create({
username: 'testuser',
email: 'test@example.com'
});
// 查询
const users = await User.findAll();
console.log(users);
// 更新
await User.update(
{ email: 'new@example.com' },
{ where: { id: 1 } }
);
// 删除
await User.destroy({
where: { id: 1 }
});
}
// 执行
syncDatabase().then(() => crudOperations());
// 使用事务的示例
async function createWithTransaction() {
const t = await sequelize.transaction();
try {
const user = await User.create({
username: 'transaction_user',
email: 'transaction@example.com'
}, { transaction: t });
await t.commit();
return user;
} catch (error) {
await t.rollback();
throw error;
}
}
syncDatabase().then(() => createWithTransaction());