mysql-sexy-query
一个优雅的 sql 构造器
ORM 级别的太重了, 没详细研究. 我想找一个轻巧的,语义化的 mysql 库, 还是没有找到.
而 mongodb 对于只有 512M 内存的vps,是遥不可及. 于是,一个轮子又出来的:
新版特性 :
- 用 CoffeeScript 重构代码
- 降偶,使用
适配器
的方式与驱动连接- 支持 node-mysql
- 支持 mysql-native
文档
DEMO :
###
use CoffeeScript
使用 node-mysql 适合器 ,
注: 如使用 mysql-native ,代码为:
mysql = require('node-mysql-sexy-query').mysql_native
###
mysql = require('node-mysql-sexy-query').mysql
connection = mysql.create_connection(
host : 'localhost',
user : 'root',
password : '',
database : 'test'
)
class User extends mysql
table_name : 'user'
connection : connection
class Role extends mysql
table_name : 'role'
connection : connection
# 查询 id 为 1 的用户
User.find('id = ?' , 1).execute (rows) ->
console.log rows
# 'order' and 'get'
User.find().order('id DESC').get(10 , (rows) ->
console.log rows
)
# 查询所有 sex 为 0 的用户
User.find('sex = ?' , 0).all (rows) ->
console.log rows
# 统计 count
User.find('sex = ?' , 0).count (count) ->
console.log count
# 分页
ar = User.find().order('id DESC').page(1,10)
ar.execute (rows) ->
console.log rows
# 分页信息
ar.get_pagination (pagination) ->
console.log pagination
###
关联查询 join
注: 这里 `@` 代表 User 表
###
User.as('U').join(Role.as('R') , '@.role_id = R.id')
.select('@.id , @.name , R.name AS role')
.page(1,10)
.execute (rows) ->
console.log rows
安装方法
npm install git[@github](/user/github).com:vfasky/node-mysql-sexy-query.git
34 回复
@cnxhk 分支地址是?
-
我那个"性查询" 分离了 sql 构造模块 , 可以连 nodejs-mysql-native , 但是测试时,中文乱码( href ) , 放弃了;
-
有兴趣可以参考 https://github.com/vfasky/mysql-sex-query/blob/master/mysql.js
可以试试sannis的libmysqlclient https://github.com/Sannis/node-mysql-libmysqlclient ;我们也贡献了几个patch,包括利用libuv实现的真正意义上的异步querySend
@qimiguang 不好意思,最近有点忙 新版已经解决了你所发现的问题, 且语法跟旧版都有点变法
@supersheep npm install [email protected]:vfasky/node-mysql-sexy-query.git
@jin52yang 她只负责生成 sql
我fork了一個版本,加上mariasql and connection-pool的adapter… https://github.com/Casear/node-mysql-sexy-query …