一、基本用法
使用 pts/sql API 提供的接口,你可创建连接 SQL 数据库的客户端,发送 DDL 和 DML 请求,对数据库做基本的增删改查等操作。
二、数据库连接
建立数据库连接可调用 new sql.Database(driverName: string, dataSourceName: string) 方法。其中,driverName
参数用于指定数据库驱动程序,dataSourceName 参数用于指定数据源。
脚本示例如下:
import sql from 'pts/sql';const db = new sql.Database(sql.MySQL, "user:passwd@tcp(ip:port)/database")export default function () { // 向数据库发送请求}
注意:说明:
三、SQL 查询
SQL 查询可调用 db.query(sql string) 方法,返回符合条件的数据库记录数组。其中,sql 参数代表传入的 SQL 查询语句。
脚本示例如下:
import sql from 'pts/sql';const db = new sql.Database(sql.MySQL, "user:passwd@tcp(ip:port)/database")export default function () { let rows = db.query("SELECT * FROM user"); console.log(JSON.stringify(rows)); // [{"id":1,"name":"zhangsan","age":23},{"id":2,"name":"lisi","age":2}]}
四、SQL 执行
SQL 执行可调用 db.exec(sql string) 方法,传入执行语句,返回本次执行对数据库的影响(返回字段包括:最后插入行的 ID、所有受影响的行数)。
其中,sql 参数代表传入的 SQL 执行语句。
脚本示例如下:
import sql from 'pts/sql';const db = new sql.Database(sql.MySQL, "user:passwd@tcp(ip:port)/database")export default function () { // 修改数据 let result = db.exec("UPDATE user SET age=? WHERE name='zhangsan'", Math.floor(Math.random() * 100)); console.log(JSON.stringify(result)); // {"lastInsertId":0,"rowsAffected":1} // 插入数据 let result1 = db.exec("insert into user (name, age) values ('wanger', 18)"); console.log(JSON.stringify(result)); // {"lastInsertId":66,"rowsAffected":1}}
注意:说明:
注意:db.exec 方法支持常见的 DDL 命令(如 create、drop、alter)和常见的 DML 命令(如 insert、update、delete)。
五、脚本示例
一个包含数据库基本操作及检查点使用的完整脚本示例如下:
import sql from 'pts/sql';import { sleep, check } from 'pts';const db = new sql.Database(sql.MySQL, "user:passwd@tcp(ip:port)/database")export default function () { // 查询数据 let rows = db.query("SELECT * FROM user"); console.log(JSON.stringify(rows)); // [{"id":1,"name":"zhangsan","age":23},{"id":2,"name":"lisi","age":2}] // 新增数据 let result = db.exec("insert into user (name, age) values ('wanger', 18)"); console.log(JSON.stringify(result)); // {"lastInsertId":66,"rowsAffected":1} // 删除数据 let result1 = db.exec("delete from user where id > 8"); console.log(JSON.stringify(result)); // {"lastInsertId":0,"rowsAffected":2} // 修改数据 let result2 = db.exec("UPDATE user SET age=? WHERE name='zhangsan'", Math.floor(Math.random() * 100)); console.log(JSON.stringify(result)); // {"lastInsertId":0,"rowsAffected":1} // 设置检查点 check("1 row returned", () => result.rowsAffected === 1); sleep(1)}
六、脚本验证
若要验证脚本执行结果,可在正式压测前,先使用 PTS 调试功能,快速验证结果是否符合预期。
更多详情,可参见 调试场景。