AI编程实战篇
如何对接数据库
让你的应用拥有"记忆"
网页和应用产生的数据需要存储在数据库中,否则一刷新就全没了。本文介绍两种主流的数据库对接方式:传统 MySQL 和 云端 Supabase。
💡 类比:数据库就像你应用的"硬盘"。没有数据库,用户注册的信息、发布的文章、上传的数据都无处存放。
加载图表中...
MySQL vs Supabase
| 对比 | MySQL | Supabase |
|---|---|---|
| 类型 | 传统关系数据库 | 云端 BaaS 平台 |
| 部署 | 需要自己安装在服务器上 | 注册即用,无需部署 |
| 费用 | 软件免费,但需要服务器 | 免费计划够学习使用 |
| 管理 | 需要自己维护 | 平台自动管理 |
| 适合 | 有服务器运维经验的开发者 | 新手、个人项目、快速原型 |
| 附加功能 | 纯数据库 | 自带用户认证、文件存储、实时订阅 |
加载图表中...
方案一:Supabase(推荐新手)
什么是 Supabase?
Supabase 是一个开源的 Firebase 替代品,提供数据库、用户认证、文件存储等一站式服务。底层使用 PostgreSQL 数据库。
加载图表中...
第一步:创建项目
- 访问 supabase.com,注册账号
- 点击 "New Project",填写项目名
- 选择数据库密码和地区
- 等待项目创建完成
第二步:创建数据表
在 Supabase 控制台的 Table Editor 中,可以可视化创建数据表:
-- 例如创建一个文章表
create table articles (
id bigint primary key generated always as identity,
title text not null,
content text,
author text,
created_at timestamp with time zone default now()
);
第三步:在项目中使用
# 安装 Supabase 客户端
npm install @supabase/supabase-js
// lib/supabase.ts
import { createClient } from "@supabase/supabase-js";
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);
export default supabase;
# .env.local
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbG...
第四步:增删改查
// 查询所有文章
const { data: articles } = await supabase
.from("articles")
.select("*")
.order("created_at", { ascending: false });
// 新增文章
await supabase.from("articles").insert({
title: "我的第一篇文章",
content: "文章内容...",
author: "张三",
});
// 更新文章
await supabase
.from("articles")
.update({ title: "修改后的标题" })
.eq("id", 1);
// 删除文章
await supabase.from("articles").delete().eq("id", 1);
方案二:MySQL
适用场景
- 你已经有云服务器
- 项目需要部署在自己的服务器上
- 需要更灵活的数据库配置
第一步:安装 MySQL
# Ubuntu / Debian
sudo apt install mysql-server
# macOS(使用 Homebrew)
brew install mysql
第二步:创建数据库和表
-- 创建数据库
CREATE DATABASE my_app;
USE my_app;
-- 创建文章表
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT,
author VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
第三步:在 Node.js 项目中使用
# 安装 MySQL 客户端
npm install mysql2
// lib/db.ts
import mysql from "mysql2/promise";
const pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
});
export default pool;
# .env.local
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=my_app
第四步:增删改查
import pool from "@/lib/db";
// 查询所有文章
const [rows] = await pool.query(
"SELECT * FROM articles ORDER BY created_at DESC"
);
// 新增文章
await pool.query(
"INSERT INTO articles (title, content, author) VALUES (?, ?, ?)",
["我的第一篇文章", "文章内容...", "张三"]
);
// 更新文章
await pool.query(
"UPDATE articles SET title = ? WHERE id = ?",
["修改后的标题", 1]
);
// 删除文章
await pool.query("DELETE FROM articles WHERE id = ?", [1]);
如何让AI帮你对接
不用自己记住这些代码,直接告诉AI:
使用 Supabase
我的项目需要对接 Supabase 数据库。
项目技术栈是 Next.js + TypeScript。
我需要一个文章表,包含标题、内容、作者、创建时间字段。
帮我完成以下工作:
1. 给出建表的 SQL
2. 创建 Supabase 客户端配置
3. 实现文章的增删改查函数
使用 MySQL
我的项目需要对接 MySQL 数据库。
项目技术栈是 Next.js + TypeScript。
数据库已经安装在服务器上了。
帮我完成以下工作:
1. 给出建表的 SQL
2. 创建数据库连接配置
3. 实现文章的增删改查 API 接口
选择建议
加载图表中...
🎯 AI编程小贴士:新手强烈推荐 Supabase。它不仅是数据库,还自带用户认证和文件存储,一个服务就能满足大部分需求。你只需要在 Supabase 控制台建好表,然后告诉 AI "帮我用 Supabase 实现XXX功能",它会帮你写好所有代码。
小结
- 数据库让你的应用拥有"记忆",数据不再丢失
- Supabase:云端服务,注册即用,自带认证和存储,推荐新手
- MySQL:传统数据库,需要自己部署和维护,灵活可控
- 两者的基本操作都是增删改查(CRUD)
- 让AI帮你写数据库相关代码,你只需要描述数据结构和需求