Pisma操作数据库详解

123 阅读4分钟

前几天写了一篇nest+prisma+mysql完成后台增删改查的文章,此时出现一个需求,比如我手里有一份数据,是excel形式。

为了把它做成接口,此时我想在mysql中建一张新表,并且相应字段都加上,然后导入数据,再开始接口的开发工作,整条流程该怎么去做?

此时prisma操作过程中,部分人会出现各种报错,所以为了以防万一,把整套流程写在下面,步骤很少,随取随用!

首先我还是在项目中,定义一个prisma模型,这里在schema.prisma中去写。

对于prisma及nest不了解的宝子,可以去看上一篇文章:

《Nest从零开始增删改查》

模型此时定义好了,我把图放在下面(注意箭头处,有助于你的定位)

image.png

代码放在这里:(一步步跟着走即可)

// 择校表
model getSchool23 {
  id                Int    @id @default(autoincrement())
  // id
  ids               Int
  // 招生单位
  school            String
  // 院校特性
  characteristics   String
  // 院系所
  Faculties         String
  // 专业
  specialized       String
  // 研究方向
  researchDirection String
  // 学习方式
  learningStyle     String
  // 拟招生人数
  enrollmentNumber  String
  // 业务课一
  lessonOne         String
  // 业务课二
  lessonTwo         String
  // 外语
  english           String
  // 政治
  politics          String
  // 所在地
  place             String
  // 专业代码
  code              String
  // 指导老师
  teacher           String
  // 门类
  category          String
  // 一级学科
  firstSubject      String
  // 备注
  remarks           String
}

定义模型之后,此时要做的就是——生成 Prisma 客户端,在终端中运行以下命令以生成 Prisma 客户端:

npx prisma generate

第三步咱们需要迁移数据库,使用Prisma将你的模型迁移到 MySQL 数据库中,咱们同样在终端输入以下指令:

npx prisma migrate dev --name init

--name init 参数用于为迁移命名,你可以根据需要更改它。

最后一步就是——检查迁移状态

Prisma 将自动为你创建一个迁移文件,并将其应用到你的 MySQL 数据库中。咱们可以通过以下命令检查迁移的状态:

npx prisma migrate status

咱们最后回到navicat刷新一下,可以看到,数据库中的表已经建立好,并且相应字段也都已设置。

放一张图,大家感受一下:

image.png

现在这个名叫getSchool23的表,咱们已经建立好,下一步需要做的就是往里导数据!

我会把所有步骤截图放在下面,如果有哪步没操作好,随时评论!

右键打开提示框,咱们选择“导入向导”,如图:

image.png

由于我个人这边的数据,是excel形式的,所以直接选就行:(选完直接下一步)

image.png

下一步的操作,其实就是选取数据源所在地址,然后选中响应数据,步骤很简单:(做完咱们直接下一步)

image.png

对于下一步,我需要解释一下,先看图:

image.png

其中“字段名行”指的是,你所有的字段,是在第几行排列的?

一般情况下,数据的第一行都是字段名。

然后从第二行开始,才是数据,所以如箭头所示,咱们选1和2,下一步直接走起!

首先目标字段,是咱们自己填写的,按照你之前的prisma模型,定义的各个字段,和你excel数据里的字段,一一对应上即可,名字可以不同,但自己要知道,哪个是哪个。(做完直接下一步!)

image.png

下一步进入到下图页面,咱们直接选择追加数据:(做完直接下一步)

image.png

直接点击开始!!!

image.png

最后的最后,数据就导入到咱们的mysql里了,该写接口写接口,该写前台写前台,大致就是这样,应该够详细了。

另外,如果你想模拟几条数据,那么同样可以使用prisma往mysql里加数据,形成一种交互,这里给大家一个例子:

这里给大家做个解释,第一步属于prisma固定操作,调用即可
const { PrismaClient } = require('@prisma/client');
第二步属于实例化prisma
const prisma = new PrismaClient();
再往下就是往里插入数据(还是很浅显易懂的)
async function main() {
  const newSchool = await prisma.getSchool23.create({
    data: {
      ids: 1,
      school: 'Example School',
      characteristics: 'Public',
      Faculties: 'Faculty of Science',
      specialized: 'Computer Science',
      researchDirection: 'Artificial Intelligence',
      learningStyle: 'Full-time',
      enrollmentNumber: '50',
      lessonOne: 'Mathematics',
      lessonTwo: 'Computer Programming',
      english: 'English',
      politics: 'Political Science',
      place: 'City A',
      code: 'CS001',
      teacher: 'Dr. Smith',
      category: 'Science',
      firstSubject: 'Computer Science',
      remarks: 'No remarks',
    },
  });

  console.log('Created new school:', newSchool);
}

main()
  .catch((e) => {
    console.error(e);
    process.exit(1);
  })
  .finally(async () => {
    await prisma.$disconnect();
  });

完结撒花!!!下次见!!!