使用sequelize对mysql进行原生sql查询
使用sequelize对mysql进行原生sql查询
import sequelize from “./conn/index.js”;
// import Denglu from “./entity/denglu”;
import fs from ‘fs’;
import xlsx from ’node-xlsx’
const start = process.hrtime();
const { QueryTypes } = sequelize;
// (async ()=>{
// let res = await sequelize.query(“select * from denglu “, {type:
QueryTypes.SELECT } )
// console.log(res.length)
// res.forEach(item => console.log(item))
// })()
// let res = await sequelize.query(“select count() from denglu where cishu >
0 “, {type: QueryTypes.SELECT } )
// console.log(res)
let names = await sequelize.query(“select distinct(name) from score1 “, {
type: QueryTypes.SELECT })
// console.log(names)
// const name = “学校办公室”
// let str = “SELECT checked, COUNT() AS count FROM score1 where name =’"+
name+”’ GROUP BY checked "
let a =[]
const checkedMapping = {
‘优秀’: ‘youxiu’,
‘良好’: ’lianghao’,
‘一般’: ‘yiban’,
‘较差’: ‘buhege’
};
const fu = ( fenshu,unitName)=>{
const b = {
name: unitName,
youxiu: 0, // 优秀
lianghao: 0, // 良好
yiban: 0, // 一般
buhege: 0 // 不合格
}
fenshu.forEach(s => {
// 使用映射对象来获取正确的属性名
const propertyName = checkedMapping[s.checked];
// 如果属性名存在(即 s.checked 是一个有效的键),则更新 b 的对应属性
if (propertyName) {
b[propertyName] = s.count;
}
// 注意:这里我们没有处理 s.checked 不在映射中的情况,
// 因为根据代码逻辑,这应该是不可能的,除非数据有误。
// 如果需要处理这种情况,可以添加一个 else 分支来处理未知值。
});
a.push(b)
}
const fu2 = ( fenshu,fenshu2,unitName)=>{
const b = {
name: unitName,
youxiu: 0, // 优秀
lianghao: 0, // 良好
yiban: 0, // 一般
buhege: 0,
x_youxiu:0,
x_lianghao:0,
x_yiban:0,
x_buhege:0
}
fenshu.forEach(s => {
// 使用映射对象来获取正确的属性名
const propertyName = checkedMapping[s.checked];
// 如果属性名存在(即 s.checked 是一个有效的键),则更新 b 的对应属性
if (propertyName) {
b[propertyName] = s.count;
}
// 注意:这里我们没有处理 s.checked 不在映射中的情况,
// 因为根据代码逻辑,这应该是不可能的,除非数据有误。
// 如果需要处理这种情况,可以添加一个 else 分支来处理未知值。
});
fenshu2.forEach(s=>{
const propertyName = checkedMapping[s.checked];
if(propertyName){
b[‘x_’+propertyName]=s.count
}
})
a.push(b)
}
const excel01 = (list)=>{
let excelData = []
try{
//添加数据
var addInfo = {};
//名称
addInfo.name = “用户表”;
//数据数组
addInfo.data = [
[“名称”, “优秀”, “良好”,“一般”, “较差”, “校级优秀”,“校级良好”,“校级一般”,“校级较差”],
];
list.forEach(item => addInfo.data.push([item.name, item.youxiu, item.lianghao,
item.yiban, item.buhege,
item.x_youxiu, item.x_lianghao,item.x_yiban, item.x_buhege
]))
//添加数据
excelData.push(addInfo);
// 写xlsx
var buffer = xlsx.build(excelData);
//写入数据
fs.writeFile(’./score1.xlsx’, buffer, function (err) {
if (err) {
throw err;
}
//输出日志
console.log(‘Write to xls has finished’);
const [seconds, nanoseconds] = process.hrtime(start);
const milliseconds = seconds * 1000 + nanoseconds / 1e6;
console.log(运行时间: ${milliseconds.toFixed(2)} 毫秒
);
});
}catch(e){
//输出日志
console.log(“excel读取异常,error=%s”, e.stack)
}
}
// for (const jk of names) {
// console.log(“jk : “, jk.name )
// }
(async () => {
for (const obj of names) {
let str = SELECT checked, COUNT(*) AS count FROM score1 WHERE name = '${obj.name}' and length(work_number) = 36 GROUP BY checked
;
let so = await sequelize.query(str, { type: sequelize.QueryTypes.SELECT });
let str2 = SELECT checked, COUNT(*) AS count FROM score1 WHERE name = '${obj.name}' and length(work_number) =28 GROUP BY checked
;
let so2 = await sequelize.query(str2 , {type: sequelize.QueryTypes.SELECT});
fu2(so,so2,obj.name);
}
// console.log(a.length)
excel01(a)
})();
// 初始化对象 b
// const b = {
// name: ‘学校办公室’,
// youxiu: 0, // 优秀
// lianghao: 0, // 良好
// yiban: 0, // 一般
// buhege: 0 // 不合格
// };
// 创建一个映射对象来将 checked 值映射到 b 的属性
// so.forEach(s => {
// // 使用映射对象来获取正确的属性名
// const propertyName = checkedMapping[s.checked];
// // 如果属性名存在(即 s.checked 是一个有效的键),则更新 b 的对应属性
// if (propertyName) {
// b[propertyName] = s.count;
// }
// // 注意:这里我们没有处理 s.checked 不在映射中的情况,
// // 因为根据代码逻辑,这应该是不可能的,除非数据有误。
// // 如果需要处理这种情况,可以添加一个 else 分支来处理未知值。
// });
// let b ={}
// b.name= ‘学校办公室’
// b.lianghao = 0
// b.youxiu =0
// b.yiban =0
// b.buhege =0
// so.forEach( s => {
// if(s.checked == ‘良好’){
// b.lianghao = s.count
// }else if(s.checked == ‘优秀’){
// b.youxiu = s.count
// }else if(s.checked == ‘一般’){
// b.yiban = s.count
// }else if(s.checked == ‘不合格’){
// }
// })
// console.log(b)
// names.forEach(item => {
// })
// let users;
// (async () => {
// console.log("^^^^^^^^^”)
// users = await sequelize.query(“select * from users “, { type:
QueryTypes.SELECT })
// console.log(users)
// })()
// async function test(){
// users = await sequelize.query(“select distinct(firstName) from users “, {
type: QueryTypes.SELECT })
// }
// test()
// console.log(users)
// console.log(“khjkhjklhj”)