【日常记录】【插件】prisma 链接MySQL数据库 简单入门

文章目录

  • 1、新建项目,使用prisma链接数据库
    • 1.1、先创建一个项目
    • 1.2、初始化 npm 配置文件及下载依赖
    • 1.3、初始化TS配置文件
    • 1.4、初始化 prisma
    • 1.5、更改 prisma/schema.prisma
    • 1.6 更改.env 文件
    • 1.7 编写 prisma/schema.prisma
    • 1.8 将编写的 prisma/schema.prisma 映射到数据库
    • 1.9 安装生成 prisma 客户端
    • 1.10 往数据库插入数据及查询数据
  • 2、.env 文件
  • 3、继续修改 prisma/schema.prisma
  • 4、prisma 的daetime的问题
  • 参考链接

1、新建项目,使用prisma链接数据库

1.1、先创建一个项目

mkdir hello-prisma
cd hello-prisma

1.2、初始化 npm 配置文件及下载依赖

npm init -y
npm install typescript ts-node @types/node --save-dev

1.3、初始化TS配置文件

npx tsc --init

1.4、初始化 prisma

npx prisma init

这个命令会干两件事情

  • 创建一个名为 prisma 的目录,并且目录里面有 schema.prisma 文件,这个文件主要是放 表结构的
  • 创建一个名为.env 的配置文件,这个是用来链接数据库的,数据库的连接串就放在这里

在这里插入图片描述

1.5、更改 prisma/schema.prisma

这个格式的文件,是没有提示的,vscode 可以安装这个插件

在这里插入图片描述

这个文件默认是以下代码,但是我们现在用的是MySQL数据库,所以需要换一下

datasource db {provider = "postgresql"url      = env("DATABASE_URL")
}

正确代码如下!!!

generator client {provider = "prisma-client-js"
}datasource db {provider = "mysql"url      = env("DATABASE_URL")
}

1.6 更改.env 文件

DATABASE_URL="mysql://root:123456@localhost:3306/testprisma"

这个可以根据自己的实际情况,来处理以下,详情参考下面的 .env 文件详解

1.7 编写 prisma/schema.prisma

generator client {provider = "prisma-client-js"
}datasource db {provider = "mysql"url      = env("DATABASE_URL")
}model user {id        Int       @id @default(autoincrement())email     Stringname      String
}

这样表示 ,创建一个 user 表,有三个字段,id是 递增的,就是从1 开始以此往后,还有 email 和 name 是字符串类型

1.8 将编写的 prisma/schema.prisma 映射到数据库

npx prisma migrate dev --name 01init
  • 此命令会创建迁移文件
  • 对数据库运行sql迁移文件

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

有这两个图就说明成功了

用可视化数据库软件,可以验证以下

在这里插入图片描述

1.9 安装生成 prisma 客户端

npm install @prisma/client

1.10 往数据库插入数据及查询数据

新建 src 文件夹,然后创建index.ts 文件

import { PrismaClient } from "@prisma/client";const prisma = new PrismaClient();async function main() {await prisma.user.create({data: {name: "呆呆狗" + Math.floor((Math.random() + 1) * 100),email: "daidog" + Math.floor((Math.random() + 1) * 100) + "@qq.com",},});console.log(await prisma.user.findMany());
}main().then(async () => {await prisma.$disconnect();}).catch(async (e) => {console.error(e);await prisma.$disconnect();process.exit(1);});

终端运行此文件

npx ts-node index.ts

在这里插入图片描述

在这里插入图片描述

这样就是成功了!!!!

2、.env 文件

DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"

在这里插入图片描述

默认是这样的,但是现在是 MySQL数据库,需要换一下

MySQL数据库连接串一般是这个格式mysql://USER:PASSWORD@HOST:PORT/DATABASE

  • User:数据库用户名称
  • PASSWORD:数据库用户的密码
  • PORT:端口号,一般默认是3306
  • DATABASE:数据库名称

3、继续修改 prisma/schema.prisma

比如新增一个 age 字段,需要记录以下用户年龄

generator client {provider = "prisma-client-js"
}datasource db {provider = "mysql"url      = env("DATABASE_URL")
}model user {id    Int    @id @default(autoincrement())email Stringname  Stringage   Int
}

需要执行 npx prisma migrate dev --name 02addAge 会有以下报错,这个错误是因为,添加了一个 age 字段,这个字段不能为空,但是数据库里面现在已经有一条数据了

在这里插入图片描述

npx prisma migrate dev --name 02addAge --create-only 执行这个,创建 迁移文件,但是不在数据库中执行

npx prisma migrate dev 然后执行这个,把 模型的 东西,同步到 数据库上

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

这些文件夹里面的sql,其实就是 对比之前的表结构,你更改了什么,生成sql语句,然后自动执行/手动执行 同步到数据库

这个时候,打开 src/index,ts ,就会发现有错误,因为 age 字段是必填 不能为空的 加上TS的类型支持,这个时候会有错误提示,需要加上 缺少的属性。我这里缺少两个属性,因为我加了两个

在这里插入图片描述

4、prisma 的daetime的问题

在这里插入图片描述

GMT+0800 通常指的是一个时区偏移量,表示从协调世界时(UTC,Coordinated Universal Time)向东偏移8小时

如若在 prisma 增加一个 datetime 类型的字段,比如现在系统是 2024-06-17 12:00:00,但是插入到数据库就是 2024-06-17 04:00:00

参考链接

  • prisma 快速入门官网
  • prisma 东八区时间问题

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

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

相关文章

OSPF被动接口配置(华为)

#交换设备 OSPF被动接口配置 一、基本概念 OSPF被动接口,也称为抑制接口,即将路由器某一接口配置为被动接口后,该接口不会再接受和发送OSPF报文 二、使用场景 在路由器与终端相近或者直接相连的一侧配置被动接口 因为OSPF会定期发送报文…

ensp防火墙web密码重置(前提通过console可以登录)

客户电脑是命令行没有用户名直接输入密码就可以登录了,但是web端不知道admin的密码 前两天遇到运维单位的一台防火墙web网页不知道用户名密码,默认的登录不了,但是通过console可以登录命令行,今天就记录下如何通过命令行修改web页…

海康视觉算法平台VisionMaster 4.3.0 C# 二次开发01 加载方案并获取结果

前言 第一次使用海康视觉算法平台VisionMaster 4.3.0,项目中要使用这个平台进行视觉处理并获取结果。 运行效果 开发环境 C#, WPF, vs2022, 海康视觉算法平台VisionMaster 4.3.0 基本概念 上图这些.sol为后缀的是vm的方案文件。 打开方案文…

NSNumber转float或double类型避免小数点后补0

问题 假设NSNumber初始值是12,直接采用 [NSString stringWithFormat:"%f", number.doubleValue] ; str的值为12.0000000 解决方法 采用一下方法可以避免补0情况 NSNumber *number [NSNumber numberWithFloat:12]; NSNumberFormatter *formatter […

鸿蒙开发过程中出现很多.js或者.js.map怎么办

学习HarmonyOS应用开发已有几天了, 今天在打开DevEco Studio正常开发的过程中, 预览、修改、刷新, 然后就出现了大量的.js以及.js.map文件 这个虽然不影响开发,但是影响体验 问题原因: 编译/预览过程产生的缓存文件, 已反馈给鸿蒙的IDE团队 解决办法…

ollama部署文字转sql,并使用fastapi提供外部接口访问

根据你提供的官方文档中的调用方法,可以使用 Ollama 的 chat 方法来与模型进行交互。我们将调整 FastAPI 应用代码以使用 ollama 模块的 chat 方法。 1. 安装必要的库 确保你已经安装了 FastAPI 和 Ollama Python 客户端库: pip install fastapi uvic…

树莓派pico入坑笔记,快捷键键盘制作

使用usb_hid功能制作快捷键小键盘,定义了6个键,分别是 ctrlz ctrlv ctrlc ctrla ctrlw ctrln 对应引脚 board.GP4, board.GP8, board.GP13 board.GP28, board.GP20, board.GP17 需要用到的库,记得复制进单片机存储里面 然后是main主程…

3dmax2025能用云渲染吗?2025最新云渲染渲染100使用方法

3dmax2025还没用上云渲染?简单3步用上云渲染。 第一步,打开浏览器搜索渲染100,并进入下载客户端并安装 第二步,打开已安装的客户端进行安装,点击登录,未登录注册个账号即可(注册账号时邀请码填…

记录一下GMT时间转北京时间

GMT时间比北京时间慢8小时 1. dayjs import dayjs from dayjs dateFormat () (value: Parameters<typeof dayjs>[0],format YYYY-MM-DD HH:mm:ss) > (value ? dayjs(value).format(format) : )2. new Date timeDate(time){return new Date(time) // time 必须是字…

Sermant标签路由能力在同城双活场景的应用

作者&#xff1a;聂子雄 华为云高级软件工程师 摘要&#xff1a;目前应用上云已成为趋势&#xff0c;用户也对应用在云上的高可靠方案有更高追求&#xff0c;目前同城双活场景作为应用高可靠方案中的一种常见实践方案&#xff0c;对微服务流量提出了数据中心亲和性的要求&…

浙江电信联合中兴通讯取得新突破,完成融合边缘商用验证

前不久&#xff0c;浙江电信联合中兴通讯在融合边缘方面取得新突破&#xff0c;在嘉兴完成了融合边缘的商用验证&#xff0c;并发布了商用版本。接下来&#xff0c;双方在融合边缘方面正式进入商用阶段&#xff0c;有效赋能新质生产力。    随着数字经济的快速发展&#xff0…

数据结构与算法笔记:基础篇 -字符串匹配(下):如何借助BM算法轻松理解KMP算法?

概述 上篇文章讲了 BM 算法&#xff0c;尽管他复杂&#xff0c;也不好理解&#xff0c;但确实工程中非常好用的一种高效字符串匹配算法。有统计说&#xff0c;它是最搞笑、最常用的字符串匹配算法。不过&#xff0c;在所有的字符串匹配算法里&#xff0c;要说最知名的一种的话…

【C++】认识STL

【C】认识STL STL的概念STL的版本STL的六大组件STL的三个境界STL的缺陷 STL的概念 SLT(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个保罗数据结构与算法的软件框架。 STL的版本 原…

便携式手持气象仪:低功耗设计

TH-LSZ05便携式手持气象仪是一款轻便、操作简便的气象监测工具&#xff0c;集成了风向、风速、大气压、温度、湿度五项气象要素的测量功能。这些设备通常设计为体积小、重量轻&#xff0c;以便于用户随时携带并使用。通过使用手持气象仪&#xff0c;用户可以实时获取关键的气象…

列表(list)(Python)

文章目录 一、定义二、列表常用操作 一、定义 list ["张三", "李四", "王五", "赵六"]二、列表常用操作 分类关键字/函数/方法说明增加列表.append(值)在列表末尾追加值列表.insert(索引&#xff0c; 值)在指定位置插入值&#xff…

Android Root全教程

1.安装指定镜像&#xff1a;https://blog.csdn.net/weixin_43846562/article/details/130028258 2.安装 magisk&#xff1a;https://blog.csdn.net/qq1337715208/article/details/115922514 3.打开 adb root&#xff1a;https://liwugang.github.io/2021/07/11/magisk_enable…

如何训练一个企业邮局系统区分垃圾邮件和非垃圾邮件的私有化模型?用于提高企业的沟通效率

训练一个企业邮局系统区分垃圾邮件和非垃圾邮件涉及多个步骤和技术。以下是一个基本的流程&#xff1a; 1. 数据收集 获取邮件数据 收集样本&#xff1a;获取大量的历史邮件数据&#xff0c;包括标记为垃圾邮件和非垃圾邮件的邮件。标签数据&#xff1a;确保数据集中的每封邮…

DDS相关知识记录

DDS全称是Data Distribution Service&#xff0c;这是一套通信协议和API标准&#xff0c;它提供了以数据为中心的连接服务&#xff0c;基于发布者-订阅者模型。这是一套中间件&#xff0c;它提供介于操作系统和应用程序之间的功能&#xff0c;使得组件之间可以互相通信。并且提…

c++ 形参callback加上const修饰符的神坑

示例代码 template <typename Callback> void read_input(const std::string& prompt, const Callback& cb) {std::thread([prompt, cb](){std::cout << prompt << ": ";std::cout.flush();std::string line;std::getline(std::cin, line…

安徽保安员精选模拟试题(含答案)

1、风险管理的三要素是()&#xff0c;风险评价和风险控制。 A、频率分析 B、风险分析 C、风险转移 D、后果估计 答案:B 2、治安保卫重要部位是指由()确定的、关系本单位生产业务全局的部位和生产环节。 A、企事业重点单位 B、地方政府 C、企事业单位保卫协会 D、公安机关 …