ディレクトリ構造
ディレクトリ構成
- app
- generated
- node_modules
- prisma
- schema.prisma
- .env
- .gitignore
- index.ts
- package-lock.json
- package.json
- prisma.config.ts
- tsconfig.json
必要なパッケージをインストールします。
npm install -D prisma @prisma/client typescript ts-node @types/node 以下のコマンドを実行すると、「 tsconfig.json 」のファイルが作成されます。
npx tsc --init 「 package.json 」を以下のように編集します。
{
"type": "commonjs",
"scripts": {
"start": "ts-node index.ts"
},
"devDependencies": {
"@prisma/client": "^6.19.0",
"@types/node": "^24.10.1",
"prisma": "^6.19.0",
"ts-node": "^10.9.2",
"typescript": "^5.9.3"
}
}
「 tsconfig.json 」を以下のように編集します。
{
"compilerOptions": {
"target": "ES2022",
"module": "CommonJS",
"esModuleInterop": true,
"strict": true,
"skipLibCheck": true
}
} 以下のコマンドを実行するとprisma/schema.prismaと.envが生成されます。
npx prisma init --datasource-provider mysql schema.prismaを以下のように編集します。
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
generator client {
provider = "prisma-client-js"
output = "../generated/prisma"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
} DATABASE_URL="mysql://root:mypassword@localhost:3306/your_existing_db_name" 以下のコマンドを実行すると、users や sequelizemeta などの既存テーブルが model 定義として schema.prisma に追加されます。
npx prisma db pull schema.prismaが以下のように変更されます。
generator client {
provider = "prisma-client-js"
output = "../generated/prisma"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model sequelizemeta {
name String @id @unique(map: "name") @db.VarChar(255)
}
model users {
id Int @id @default(autoincrement())
name String? @db.VarChar(255)
age Int?
created_at DateTime @db.DateTime(0)
updated_at DateTime @db.DateTime(0)
} 以下のコマンドを実行し、Prisma Client を作成します。
npx prisma generate 「 index.ts 」のファイルを作成し以下のようにします。
import { PrismaClient } from "./generated/prisma/index.js";
const prisma = new PrismaClient();
async function main() {
const users = await prisma.users.findMany();
console.log(users);
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
}); アプリケーションの実行します。
npx ts-node index.ts