# mm_sqlite **Repository Path**: qiuwenwu91/mm_sqlite ## Basic Information - **Project Name**: mm_sqlite - **Description**: No description available - **Primary Language**: NodeJS - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-17 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mm_sqlite [中文](./README.md) | [English](./README_EN.md) 高性能SQLite数据库操作模块,提供与mm_mysql完全兼容的API接口。适用于Node.js应用的轻量级数据存储解决方案。 ## 安装 ```bash npm install mm_sqlite --save ``` ## 特性 - 🚀 **高性能优化**:经过深度优化的SQL构建器和连接管理 - 🔄 **完全兼容**:与mm_mysql模块API完全兼容,可无缝切换 - 📊 **内存优化**:优化的内存使用,减少GC压力 - 🔧 **链式调用**:流畅的SQL构建器链式调用 - 🛡️ **错误处理**:完善的错误处理机制 - 📈 **连接池支持**:支持连接池模式,提高并发性能 - 🔒 **事务支持**:完整的事务处理机制 - 🔍 **类型安全**:完善的JSDoc类型注释 ## 依赖要求 - Node.js 14.0+ - SQLite3 3.0+ ## 快速开始 ### 基本使用 #### 初始化和连接 ```javascript const { Sqlite } = require('mm_sqlite'); // 创建数据库实例 const sqlite = new Sqlite({ dir: './db/', // 数据库文件存储目录 database: 'test', // 数据库文件名(不包含扩展名) charset: 'utf8mb4', // 字符集 timezone: '+08:00', // 时区 connect_timeout: 20000, // 连接超时时间(毫秒) acquire_timeout: 20000, // 获取连接超时时间(毫秒) query_timeout: 20000, // 查询超时时间(毫秒) connection_limit: 1, // 连接限制(>1启用连接池) enable_keep_alive: true, // 启用保活 keep_alive_initial_delay: 10000, // 保活初始延迟 enable_reconnect: true, // 启用重连 reconnect_interval: 1000, // 重连间隔 max_reconnect_attempts: 5, // 最大重连尝试次数 wait_for_connections: true, // 等待连接 pool_min: 1, // 连接池最小连接数 pool_max: 5, // 连接池最大连接数 pool_acquire_timeout: 30000, // 连接池获取超时 pool_idle_timeout: 60000, // 连接池空闲超时 pool_reap_interval: 1000 // 连接池清理间隔 }); // 打开数据库连接 await sqlite.open(); ``` #### 基础操作 ```javascript // 获取数据库管理器 const db = sqlite.db(); // 设置表名 const userDb = db.new('users', 'id'); // 插入数据 const result = await userDb.add({ username: '张三', email: 'zhangsan@example.com', age: 28, created_at: new Date() }); // 查询数据 const users = await userDb.get(); // 更新数据 await userDb.set({ id: 1 }, { age: 29 }); // 删除数据 await userDb.del({ id: 1 }); ``` #### 高级查询 ```javascript // 条件查询 const adultUsers = await userDb.get({ age: { _gte: 18 } }); // 分页查询 const pageUsers = await userDb.get({ _page: 1, _size: 10, _sort: 'created_at desc' }); // 聚合查询 const stats = await userDb.aggr({ _count: 'id', _avg: 'age', _max: 'age', _min: 'age' }); ``` ## API参考 ### Sqlite类 #### 构造函数 ```javascript new Sqlite(config) ``` #### 主要方法 - `open()` - 打开数据库连接 - `close()` - 关闭数据库连接 - `db()` - 获取数据库管理器实例 - `run(sql, params)` - 执行查询SQL - `exec(sql, params)` - 执行非查询SQL ### DB类 #### 表操作 - `addTable(table, field, type, auto, commit, timeout)` - 创建表 - `dropTable(table, timeout)` - 删除表 - `renameTable(table, new_table, timeout)` - 重命名表 - `emptyTable(table, timeout)` - 清空表 - `hasTable(table, timeout)` - 检查表是否存在 #### 字段操作 - `addField(field, type, value, not_null, auto, comment, timeout)` - 添加字段 - `delField(table, field, timeout)` - 删除字段 - `renameField(table, field, new_field, type, timeout)` - 重命名字段 - `editField(table, field, type, timeout)` - 修改字段 - `fields(table, field_name, timeout)` - 获取字段信息 #### 数据操作 - `add(data, timeout)` - 插入数据 - `set(where, data, timeout)` - 更新数据 - `del(where, timeout)` - 删除数据 - `get(where, timeout)` - 查询数据 - `getTableData(table, batchSize, timeout)` - 获取表数据 #### 事务操作 - `start()` - 开始事务 - `commit(transaction)` - 提交事务 - `back(transaction)` - 回滚事务 - `transaction(callback)` - 事务中执行操作 ## 配置参数 | 参数 | 类型 | 默认值 | 描述 | |------|------|--------|------| | dir | string | './db/' | 数据库文件存储目录 | | database | string | 'mm' | 数据库文件名 | | charset | string | 'utf8mb4' | 字符集 | | timezone | string | '+08:00' | 时区 | | connect_timeout | number | 20000 | 连接超时时间(ms) | | acquire_timeout | number | 20000 | 获取连接超时时间(ms) | | query_timeout | number | 20000 | 查询超时时间(ms) | | connection_limit | number | 1 | 连接限制 | | enable_keep_alive | boolean | true | 启用保活 | | keep_alive_initial_delay | number | 10000 | 保活初始延迟(ms) | | enable_reconnect | boolean | true | 启用重连 | | reconnect_interval | number | 1000 | 重连间隔(ms) | | max_reconnect_attempts | number | 5 | 最大重连尝试次数 | | wait_for_connections | boolean | true | 等待连接 | | pool_min | number | 1 | 连接池最小连接数 | | pool_max | number | 5 | 连接池最大连接数 | | pool_acquire_timeout | number | 30000 | 连接池获取超时(ms) | | pool_idle_timeout | number | 60000 | 连接池空闲超时(ms) | | pool_reap_interval | number | 1000 | 连接池清理间隔(ms) | ## 开发规范 - 使用JavaScript开发,禁止使用TypeScript - 使用JSDoc注释进行类型定义 - 遵循统一的命名规范和方法签名 - 完善的错误处理机制 - 支持异步/等待语法 ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request来改进这个项目。