orm-mysql-usage
Build MySQL queries, perform CRUD operations, and manage transactions using @axiosleo/orm-mysql
Install / Use
npx skills add AxiosLeo/node-orm-mysqlInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Data & AnalyticsSupported Platforms
Skill content
View source on GitHubname: orm-mysql-usage description: Build MySQL queries, perform CRUD operations, and manage transactions using @axiosleo/orm-mysql. Use when writing database queries, building where conditions, inserting/updating/deleting rows, managing transactions, or working with the ORM query builder in this project.
@axiosleo/orm-mysql Usage Guide
Installation
npm install @axiosleo/orm-mysql
Setup
Create a Connection
const { createClient, QueryHandler } = require("@axiosleo/orm-mysql");
const conn = createClient({
host: "localhost",
port: 3306,
user: "root",
password: "password",
database: "my_db",
});
const db = new QueryHandler(conn);
Create a Connection Pool (recommended for production)
const { createPool, QueryHandler } = require("@axiosleo/orm-mysql");
const pool = createPool({
host: "localhost",
port: 3306,
user: "root",
password: "password",
database: "my_db",
connectionLimit: 10,
});
const db = new QueryHandler(pool);
Using MySQLClient
const { MySQLClient } = require("@axiosleo/orm-mysql");
const client = new MySQLClient({
host: "localhost",
port: 3306,
user: "root",
password: "password",
database: "my_db",
}, null, "pool"); // "default" | "promise" | "pool"
const rows = await client.table("users").select();
await client.close();
Class Hierarchy
QueryCondition -- where clauses (where, whereIn, whereLike, whereBetween...)
└── Query -- query building (table, attr, join, orderBy, limit, page...)
└── QueryOperator -- execution (select, find, insert, update, delete...)
└── TransactionOperator -- adds append() for row locking
QueryHandlerwraps a connection/pool and createsQueryOperatorvia.table(name)TransactionHandlerwraps a promise connection and createsTransactionOperatorvia.table(name)
Quick Start
const db = new QueryHandler(conn);
// SELECT
const users = await db.table("users")
.where("age", ">", 18)
.orderBy("name", "asc")
.limit(10)
.select("id", "name", "age");
// INSERT
await db.table("users").insert({ name: "Joe", age: 25 });
// UPDATE
await db.table("users").where("id", 1).update({ age: 26 });
// DELETE
await db.table("users").where("id", 1).delete();
// COUNT
const total = await db.table("users").where("age", ">", 18).count();
// IMPORTANT: for paginated lists, reuse the SAME builder for count() and select() -- see pagination.md
// FIND single row
const user = await db.table("users").where("id", 1).find();
Dry Run with notExec()
Call notExec() before any CRUD method to get a Builder object with .sql and .values instead of executing:
const builder = await db.table("users")
.where("age", ">", 18)
.notExec()
.select("id", "name");
console.log(builder.sql); // "SELECT `id`, `name` FROM `users` WHERE `age` > ?"
console.log(builder.values); // [18]
Reference Files
| Scenario | File | |----------|------| | Building queries (table, join, orderBy, limit, groupBy, attr) | query-building.md | | Where conditions (where, whereIn, whereLike, whereBetween...) | where-conditions.md | | CRUD operations (select, find, count, insert, update, delete, incrBy, upsertRow) | crud-operations.md | | Pagination (reuse the same builder for count() and select(), avoid duplicated where clauses) | pagination.md | | Transactions (beginTransaction, commit, rollback, FOR UPDATE) | transactions.md |
Hooks
Register pre/post hooks for query operations:
const { Hook } = require("@axiosleo/orm-mysql");
Hook.pre(async (options) => {
console.log("Before:", options.operator, options.tables);
}, { table: "users", opt: "insert" });
Hook.post(async (options, result) => {
console.log("After:", result);
}, { table: "users", opt: "insert" });
Schema Helpers
const exists = await db.existTable("users");
const dbExists = await db.existDatabase("my_db");
const fields = await db.getTableFields("my_db", "users", "COLUMN_NAME", "DATA_TYPE");
Raw SQL
const result = await db.query({ sql: "SELECT * FROM users WHERE id = ?", values: [1] });
Related Skills
claude-mem
94.4kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Chat2DB
28.2kChat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40+ databases, manage data, edit and run SQL, and use your own AI model to generate, explain, and optimize queries.
Douyin_TikTok_Download_API
20.2k🚀 Self-hosted TikTok & Douyin scraper and no-watermark video downloader — async REST API, MCP server, CLI and web console for posts, profiles, comments and playlists. Self-healing identity pool, PostgreSQL archive, one docker compose up. 抖音、TikTok 数据采集与无水印视频下载 API,自托管,支持 MCP 调用与 Docker 一键部署。
dbx
20.3k25 MB lightweight cross-platform database client for 90+ databases, including MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, SQL Server, and Dameng. Built-in AI, MCP Server, CLI, desktop and Docker.
Security Score
Audited on Jun 12, 2026
