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.pswp.cn/news/250542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250542.shtml
英文地址,請注明出處:http://en.pswp.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…