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

news2024/12/24 3:07:17

文章目录

  • 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     String
  name      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 String
  name  String
  age   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.coloradmin.cn/o/1832154.html

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

相关文章

实时数仓Hologres V2.2发布,Serverless Computing降本20%

Highlight 新发布Serverless Computing,提升大任务稳定性,同时可降低20%计算成本 引擎性能优化,TPC-H 1TB测试相对V1.X 提升100% 实时湖仓加速架构升级,支持Paimon,直读ORC、Parquet数据性能提升5倍以上 新增实例监…

如何安全进行亚马逊、沃尔玛测评?

在亚马逊、沃尔玛、速卖通、阿里国际站等电商平台上,测评已成为一种高效的推广手段,但伴随的风险也不容忽视。这些风险主要源于平台严格的大数据风控机制,它涵盖了多个方面,以确保评价的真实性和合规性。 首先,硬件参数…

解决 uniapp h5 页面在私有企微iOS平台 间歇性调用uni api不成功问题(uni.previewImage为例)。

demo <template><view class"content"><image class"logo" src"/static/logo.png"></image><button click"previewImage">预览图片</button></view> </template><script> //打…

数据可视化实验一:Panda数据处理及matplotlib绘图初步

目录​​​​​​​ 2024-6-17 一、请将所有含有发明家“吴峰”的发明专利的“申请日”打印出来。并将含有“吴峰”的所有发明专利条目保存到Excel中 1.1 代码实现 1.2 运行结果 二、读取文件创建城市、人口、性别比、城镇化率DataFrame对象&#xff0c;计算指标排名&…

AI写代码,CS还有前途吗?加州大学伯克利分校:CDSS申请人数激增48%!

目录 01 CS入学人数暴涨 02 人类Coder可堪大任 03 AI还没有学会创新 04 编程与农耕不同 AI写了这么多代码&#xff0c;你还应该学习计算机科学吗&#xff1f; 新的数据显示&#xff0c;学生们仍然热衷于选修计算机科学&#xff1a;加州大学伯克利分校&#xff08;UCB&#…

AI大模型应用(1)OpenAi API快速入门

AI大模型应用(1)OpenAi API快速入门 2022 年 11 月&#xff0c;ChatGPT 成功面世&#xff0c;成为历史上用户增长最快的消费者应用。与 Google、FaceBook等公司不同&#xff0c;OpenAI 从初代模型 GPT-1 开始&#xff0c;始终贯彻只有解码器&#xff08;Decoder-only&#xff…

动力学笔记01——共振频率和共振带的数学定义

文章目录 0、背景描述1、正文2. 位移、速度、加速度的共振频率并不相同 0、背景描述 过去一年&#xff0c;我基本都在考虑塔架&#xff08;尤其是混塔&#xff09;频率仿真/模态分析的问题。关于这个问题&#xff0c;不仅有地基刚度&#xff0c;还有塔筒本身以及其他影响频率的…

散户必须知道!个股场外期权期限是什么?

今天带你了解散户必须知道&#xff01;个股场外期权期限是什么&#xff1f;场外个股期权是一种交易双方买卖未来某个时间以某个价格购买或卖出某种资产的权力&#xff0c;允许投资者以相对较小的期权费用获得名义本金&#xff0c;以获取更高的回报。 个股场外期权期限是什么&am…

【免费Web系列】大家好 ,今天是Web课程的第二二天点赞收藏关注,持续更新作品 !

这是Web第一天的课程大家可以传送过去学习 http://t.csdnimg.cn/K547r 员工管理 1. 修改员工 对于修改功能&#xff0c;分为两步实现&#xff1a; 点击 “编辑” 根据ID查询员工的信息&#xff0c;回显展示。 点击 “保存” 按钮&#xff0c;修改员工的信息 。 1.1 回显…

Docker(二)-Centos7安装Docker并配置镜像加速

系统用户为非root用户 1.安装条件 确定Centos版本是否是7及以上sudo vim /etc/redhat-release2.官网地址 https://docs.docker.com/engine/install/centos3.卸载已安装的旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-lates…

【问题记录】Ubuntu提示: “E: 软件包 gcc 没有可安装候选“

Ubuntu提示: "E: 软件包 gcc 没有可安装候选" 一&#xff0c;问题现象二&#xff0c;问题原因&解决方法 一&#xff0c;问题现象 在虚拟机Ubuntu中进行安装gcc命令时报错&#xff1a;“E: 软件包 gcc 没有可安装候选”: 二&#xff0c;问题原因&解决方法 …

关于使用命令行打开wps word文件

前言 在学习python-docx时&#xff0c;想在完成运行时使用命令行打开生成的docx文件。 总结 在经过尝试后&#xff0c;得出以下代码&#xff1a; commandrstart "C:\Users\86136\AppData\Local\Kingsoft\WPS Office\12.1.0.16929\office6\wps.exe" "./result…

【SpringBoot整合系列】SpringBoot整合kinfe4j

目录 kinfe4j与Swagger的区别 SpringBoot2.x整合kinfe4j1.添加依赖2.启动类注解3.创建Knife4J配置类4.实体类5.接口admin访问 api访问 常用注解汇总SpringBoot3.x整合Kinfe4j启动报错解决1.更换依赖2.启动类3.配置4.配置类5.参数实体类6.接口admin访问 api访问 各版本注解参照 …

openlayers 使用WMTS和XYZ加载天地图切片服务

openlayers 使用WMTS和XYZ加载天地图切片服务 本篇介绍一下使用openlayers加载天地图切片&#xff0c;两种方法&#xff1a; 使用WMTS使用XYZ 1 需求 openlayers加载天地图 2 分析 主要是不同类型source的使用 WMTS&#xff08;Web Map Tile Service&#xff09; 是 OGC…

英伟达开源 3400 亿参数模型;苹果 iOS 18 紧急 SOS 新增实时视频功能丨 RTE 开发者日报 Vol.225

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

根据配置的参数规格生成商品SKU

参数规格如下&#xff1a; let specParam [[红色,绿色,白色,黄色], [大,小]]js部分&#xff1a; let getSpecParamCom (specData, index) > {for (let i 0; i < specData[index].length; i) {tempResult[index] specData[index][i];if (index ! specData.length - …

html入门综合练习

综合练习 通过实际项目练习可以更好地理解和掌握HTML、CSS和JavaScript。以下是几个综合练习项目的建议&#xff1a; 项目1&#xff1a;个人简历网页 创建一个包含以下内容的个人简历网页&#xff1a; 个人简介&#xff08;姓名、照片、联系方式&#xff09;教育背景工作经…

Elixir学习笔记——编写文档

Elixir 将文档视为一等级别类。文档必须易于编写且易于阅读。在本指南中&#xff0c;您将学习如何在 Elixir 中编写文档&#xff0c;涵盖模块属性、样式实践和文档测试等结构。 Markdown Elixir 文档是使用 Markdown 编写的。网上有很多关于 Markdown 的指南&#xff0c;我们…

洗护用品行业怎么做到数据安全管理?迅软DSE加密软件避免数据泄露

项目背景 公司全研发中心内部专家联合外部专家组织&#xff0c;充分发挥联合研究、探讨技术发展带来的重要性&#xff0c;产品开发、核心技术开发、工艺技术研究和创新&#xff0c;已形成了坚实的研发后盾&#xff0c;已拥有了大量的核心信息数据&#xff0c;为防患于未然&…

ml307A模块连接阿里云(详细版)

1、需要的信息 MQTT连接参数、订阅或发布的主题、服务器地址、端口1883 服务器地址&#xff1a; alFMz7jnArW.iot-as-mqtt.cn-shanghai.aliyuncs.com 注&#xff1a;重要的信息阿里云信息大家不要透露&#xff0c;写完笔记会及时删除产品及设备&#xff0c;大家用自己的信息…