prisma 链接MySQL数据库 简单入门

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

5、表里面有数据还想增加字段,并且是 不为null

在这里插入图片描述

目前表里面有两行数据,增加Column2 列,必填

  1. 直接再数据库中修改,或者使用 数据库可视化软件
  2. prisma 项目里面 执行 npx prisma db pull

注意:执行完上面的第二步,这个命令会修改,prisma 文件夹下的 schema 文件的内容

如若你在数据添加的这个字段是必填,那么其实引用这个表的代码,不会检测到你又新增了一个必填,必须要在执行一下, npx prisma generate ,这样才会重新生成prisma ,这个才会触发 TS的检测 这个时候就会看到下面 data属性红色波浪线

在这里插入图片描述
5. 继续执行 npx prisma generate
在这里插入图片描述

这个时候,这里就变了,变成必填项了,因为 TS类型检查的原因

6、npx prisma studio

这个命令,会打开一个网页,可视化的数据库界面
 http://localhost:5555/ 运行再这个地址下

在这里插入图片描述

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值