node --- 连接mysql(docker环境) Sequelize库

mysql 数据库

  • [1] 首先配置 docker 环境
    采用 docker-compose 方法
    源码: /test-mysql/docker-compose.yml
version: '3.1'
services:mysql:image: mysqlcommand: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleports:- 3307:3306adminer:image: adminerrestart: alwaysports:- 8081:8080

运行如下命令生成镜像

docker-compose up

在这里插入图片描述

  • [2] 打开浏览器 localhost:8081
    (1)登录管理页面
    (2)创建新数据库 mar-mysql
    在这里插入图片描述
  • [3] 写如下配置文件连接数据库
    源码: /test-mysql/mysql2.js
    部分代码说明:
    (1) 连接数据库
const mysql = require('mysql2/promise')
const config = {host: 'localhost',user: 'root',password: 'example',database: 'mar-mysql'
}// 创建连接
const connection = await mysql.createConnection(config)

(2) 创建表

let ret = await connection.execute(`CREATE TABLE IF NOT EXISTS test(id INT NOT NULL AUTO_INCREMENT,message VARCHAR(45) NULL,PRIMARY KEY (id))`
)

(3) 插入数据

let ret = await connection.execute(`INSERT INTO test (message) VALUE(?)`,['abc']);

(4) 查询

const [rows] = await connection.execute(`
SELECT * FROM test
`)

mysql2.js

(async () => {const mysql = require('mysql2/promise');const cfg = {host: "localhost",user: "root",password: "example", // 修改为你的密码database: "mar-mysql" // 确保数据库存在};// 创建连接const connection = await mysql.createConnection(cfg);// console.log('conn:', connection);// IF NOT EXISTS: 如果不存在就创建// NOT NULL AUTO_INCREMENT: 非空自增// PRIMARY KEY (id): 主键是id// 创建表let ret = await connection.execute(`CREATE TABLE IF NOT EXISTS test(id INT NOT NULL AUTO_INCREMENT,message VARCHAR(45) NULL,PRIMARY KEY (id))`)console.log('ret:', ret);// 插入数据// ret = await connection.execute(`// INSERT INTO test (message) VALUE(?)// `, ['abc']);// console.log('insert:', ret);// 查询const [rows, fields] = await connection.execute(`SELECT * FROM test`);console.log('select', JSON.stringify(rows));})()

执行mysql2

node .\mysql2.js

在这里插入图片描述
在这里插入图片描述

ORM

  • 对象关系映射: Object Relational Mapping
  • 目的: 通过使用描述对象和数据库之间的关系的元数据,将面向对象语言程序中的对象自动持续化到关系数据库中.
  • 简单说明: 就是使用对象的方式(而非SQL语句)来操作数据库
  • 栗子: Sequelize库

Sequelize

  • [1] 连接
const Sequelize = require('sequelize')const sequelize = new Sequelize('mar-mysql', 'root', 'example', {host: 'localhost',dialect: 'mysql',operatorAliases: false
})
  • [2] 定义模型
const Fruit = sequelize.define('Fruit', {name: { type: Sequelize.STRING(20), allowNull: false },price: { type: Sequelize.FLOAT, allowNull: false },stock: { type: Sequelize.INTEGET, defaultValue: 0 }
})let ret = await Fruit.sync();
  • [3] 执行
node .\sequelize

在这里插入图片描述

  • [4] 说明: 以对象的方式编写的程序,通过Sequelize库,在运行时自动转换成SQL语句

  • [5] 补充: 往刚才创建的Fruit表中 插入一条数据 banana

let ret = await Fruit.create({name: "香蕉",price: 3.5
});
console.log("banana:", ret);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-接口练习

Java-接口练习 编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法voidprintCapitalLetter();在接口InterfaceB中有个方法void printLowercaseLetter();然 后写一个类Print实现接口InterfaceA和InterfaceB&#xff0…

类模板与运算符重载(一个简单的例子)

类模板与运算符重载(一个简单的例子) 标签(空格分隔): C 算法竞赛 下面是一段简单的代码,表示我们建立了一个类模板Vector,可以看做是对STL中vector的简单实现。 为了让这个Vector支持通过下标…

Java 试题一

Java 试题一 1、GC是什么? 为什么要有GC 答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方, 忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动 …

操作系统 --- [笔记]功能、组成

操作系统的作用 管理计算机硬件充当计算机用户和计算机硬件的中介(操作系统控制硬件,协调各个用户应用程序的硬件) 计算机系统的资源 CPU时间、内存空间、文件存储空间、I/O设备等 操作系统的定义 如何定义一个操作系统: 计算机系统的根本目的是,执行用户程序并且更容易解…

Java 试题二

Java 试题二 1、哪个选项和show函数重载 class Demo{ void show(int a,int b,float c){} } A.void show(int a,float c,int b){}//yes B,void show(int a,int b,float c){}//一模一样。不可以出现在同一个类中。 C.int show(int a,float c,int b){return a;}//yes。 D.in…

Python之简单验证码实现

def v_code(): ret for i in range(5): num random.randint(0,9) alf chr(random.randint(65,122)) s str(random.choice([num,alf])) ret s return retprint(v_code())转载于:https://www.cnblogs.com/geeker-xjl/p/8809915.html

测绘软件使用体会

进入石家庄铁道大学已经两年了,学习测绘工程专业也已经两年了,大一的时候大多是对测绘不了解,到了大二的时候上半学期我就开始了解和使用一些测绘专业相关的软件,在大二下半学期实习的时候更是深入的学习和使用测绘软件&#xff0…

javascript --- event loop

栗子1 求下面函数的输出 console.log(script start);setTimeout(() > {console.log(setTimeoout); }, 0);Promise.resolve().then(function(){console.log(promise1); }).then(function(){console.log(promise2); }) console.log(script end);说明: 在"promise2"…

sublime 设置自动换行

1.打开sublime,点击preferences -> settings 2.将word_wrap的值由auto修改为true(若没有word_wrap,手动添加) 转载于:https://www.cnblogs.com/hitwgs/p/8821316.html

Java 试题三

Java 试题三 1、java类是否可以多继承,怎么实现多继承? 答:java没有多继承,但可以通过接口的形式来达到多继承的目地。 2、我比较两个String总是false,但是它们明明都是”abc” ! 答:比较Str…

Cent os常见操作命令

1.查看防火墙状态:firewall-cmd –-state 2.关闭防火墙:systemctl stop firewalld.service 3.禁止防火墙开机启动:systemctl disable firewalld.service 4.关闭selinux:vi /etc/selinux/config,然SELINUXdisabled 5.查…

koa --- 使用中间件多层级抛出错误

说明 能够熟练的掌握错误的抛出,可以在一定程度上提高代码的开发效率和可读性 构造错误 本栗采用调用一个不存在的函数来抛出错误 const Koa require(koa); const app new Koa();// 响应时间输出中间件 app.use(async (ctx, next) > {await next();// 获取响应头,印证…

电脑的真正价值

1.不是应用程序,而是开发程序 2.高级语言就像是人类的语言,低级语言就像是一个全心全意帮我的社交专家,他帮我说服电脑实现我的指令 3.高级语言就是字节码,低级语言帮我转换成机器码 4.有时候,高级语言的一个眼神&…

Java 试题四

Java 试题四 1、abstract class 和interface 有什么区别? 【基础】 答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类, 并为该类声明方法,但不能…

PyInstaller用法

pyinstaller定义:PyInstaller是一个压缩python文件成为可执行程序的一个软件。 pyinstaller工作原理:① 它会扫描你所有的Python文档,并分析所有代码从而找出所有你的代码运行所需的模块。② PyInstaller会将所有这些模块和你的code放在一个文…

koa --- 监听路由,并使用模板引擎渲染显示

使用路由 /Koa实战/routes/index.js const Router require(koa-router); const router new Router();router.get(/, ctx > {ctx.body index; });module.exports router/Koa实战/routes/users.js const Router require(koa-router); const router new Router({prefi…

公共平台服务治理与鉴权

问题 解决问题 鉴权 注册 管理 总结聊一聊最近了解的公司服务治理平台,主要是思想,理念,而不是一种技术或框架。整个平台设计,融入了OAUTH2认证,融入了微服务思想,帮助公司各系统在复杂的IT架构下&#xff…

Java 试题五

Java 试题五 1、运行时异常与一般异常有何异同 答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,…

【初赛】概率与期望学习笔记

一、事件 1、单位事件、事件空间、随机事件 在一次随机试验中可能发生的不能再细分的结果被称为单位事件,用 $ E $ 表示。在随机试验中可能发生的所有单位事件的集合称为事件空间,用 $ S $ 来表示。例如在一次掷骰子的随机试验中,如果用获得的…

koa --- 扩展hbs方法

moment 是一款常用的处理时间的库传入 1999-03-01T16:00:00.000Z YYYY/MM/DD输出 1999/03/02 const moment require(moment);const myDatePattern (date, pattern) >{return moment(date).format(pattern) } 给扩展hbs功能. 放在 utils/helper.js 下方便管理 const hb…