Skip to content

Commit bec1856

Browse files
committed
update docs
1 parent ec1c1a4 commit bec1856

File tree

10 files changed

+389
-334
lines changed

10 files changed

+389
-334
lines changed

docs/.vuepress/_bulletin.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
::: center
2+
🚀 v1.10.0 已发布 🚀
3+
:::
4+
5+
🟨 此版本已将 `postgresql` 作为主数据库使用
6+
7+
🀄 `mysql` 用户无需担心,fba 仍完全兼容
8+
9+
我们预计在 v1.11.0 版本中将物理外键重构为逻辑外键,敬请期待...

docs/.vuepress/bulletin.ts

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,11 @@
11
import { BulletinOptions } from "vuepress-theme-plume";
2+
import path from 'node:path'
23

34
export const myBulletin: BulletinOptions = {
45
// layout: 'center',
56
border: true,
6-
enablePage: false,
7+
enablePage: true,
78
lifetime: 'session',
8-
contentType: 'markdown',
99
title: '公告',
10-
content: `\
11-
::: center
12-
v1.8.2 已发布
13-
:::
14-
15-
针对此版本,我们为大家带来了:
16-
17-
- Google OAuth2
18-
- 代码生成 CLI
19-
- 优化架构、bug 修复
20-
`,
10+
contentFile: path.join(__dirname, '_bulletin.md'),
2111
}

docs/.vuepress/navbar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { defineNavbarConfig, ThemeNavItem } from "vuepress-theme-plume";
22

33
export const myNavbar: ThemeNavItem[] = defineNavbarConfig([
44
{
5-
text: 'v1.9.0',
5+
text: 'v1.10.0',
66
items: [
77
{
88
text: '在线体验',

docs/backend/deploy/Docker.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ title: Docker 部署
5454

5555
4. 启动容器
5656

57-
由于构建不包含数据库,请确保本地已安装并启动相关数据库(mysql / postgresql、redis)
57+
由于构建不包含数据库,请确保本地已安装并启动相关数据库(postgresql / mysql、redis)
5858

5959
::: tabs#dockerfile
6060
@tab fba
@@ -112,14 +112,14 @@ title: Docker 部署
112112
:::
113113

114114
::: warning
115-
如果您正在使用 PostgreSQL 数据库,需修改 `.env.server` 部分配置如下:
115+
如果您正在使用 MySQL 数据库,需修改 `.env.server` 部分配置如下:
116116

117117
```dotenv:no-line-numbers
118118
# Database
119-
DATABASE_TYPE='postgresql'
120-
DATABASE_HOST='fba_postgres'
121-
DATABASE_PORT=5432
122-
DATABASE_USER='postgres'
119+
DATABASE_TYPE='mysql'
120+
DATABASE_HOST='fba_mysql'
121+
DATABASE_PORT=3306
122+
DATABASE_USER='root'
123123
DATABASE_PASSWORD='123456'
124124
```
125125

docs/backend/reference/config.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ openapi JSON 数据在线地址
4242

4343
## 数据库配置
4444

45-
### `DATABASE_TYPE` <Badge type="info" text="Literal['mysql', 'postgresql']" /> <Badge type="warning" text="env" />
45+
### `DATABASE_TYPE` <Badge type="info" text="Literal['postgresql', 'mysql']" /> <Badge type="warning" text="env" />
4646

47-
指定数据库类型,仅支持 `mysql``postgresql`,需注意第三方插件兼容性
47+
指定数据库类型,仅支持 `postgresql``mysql`,需注意第三方插件兼容性
4848

4949
### `DATABASE_HOST` <Badge type="info" text="str" /> <Badge type="warning" text="env" />
5050

docs/backend/reference/db.md

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,54 @@
22
title: 切换数据库
33
---
44

5-
::: tip
6-
此教程仅适用于 PostgreSQL 用户
5+
::: caution
6+
fba 自 v1.10.0 开始,已将默认数据库由 MySQL 替换为 PostgreSQL
77
:::
88

9-
fba 支持 MySQL、PostgreSQL 两种数据库,默认配置使用 MySQL
9+
fba 支持 PostgreSQL、MySQL 两种数据库,默认配置使用 PostgreSQL
1010

11-
如果本地未安装 PostgreSQL,你可以使用以下命令创建 Docker 镜像
11+
## Docker 镜像
12+
13+
如果你未在本地安装或习惯使用 Docker 镜像,
14+
15+
### PostgreSQL
16+
17+
```shell:no-line-numbers
18+
docker run -d \
19+
--name fba_postgres \
20+
--restart always \
21+
-e POSTGRES_DB='fba' \
22+
-e POSTGRES_PASSWORD='123456' \
23+
-e TZ='Asia/Shanghai' \
24+
-v fba_postgres:/var/lib/postgresql/data \
25+
-p 5432:5432 \
26+
postgres:16
27+
```
28+
29+
### MySQL
1230

1331
```shell:no-line-numbers
14-
docker run -d --name fba_postgres --restart always -e POSTGRES_DB='fba' -e POSTGRES_PASSWORD='123456' -e TZ='Asia/Shanghai' -v fba_postgres:/var/lib/postgresql/data -p 5432:5432 postgres:16
32+
docker run -d \
33+
--name fba_mysql \
34+
--restart always \
35+
-e MYSQL_DATABASE=fba \
36+
-e MYSQL_ROOT_PASSWORD=123456 \
37+
-e TZ=Asia/Shanghai \
38+
-v fba_mysql:/var/lib/mysql \
39+
-p 3306 \
40+
mysql:8.0.41 \
41+
--default-authentication-plugin=mysql_native_password \
42+
--character-set-server=utf8mb4 \
43+
--collation-server=utf8mb4_general_ci \
44+
--lower_case_table_names=1
1545
```
1646

1747
## 环境配置
1848

19-
PostgreSQL 与 MySQL 在用户名、端口号等方面有所不同,如果你使用上面的命令创建了 Docker 镜像,需修改 `.env` 部分配置如下,否则,请根据
20-
PostgreSQL 配置进行修改
49+
PostgreSQL 与 MySQL 在用户名、端口号等方面有所不同,如果你使用上面的命令创建了 Docker 镜像,需修改 `.env`
50+
部分配置如下,否则,请根据实际配置进行修改
51+
52+
### PostgreSQL
2153

2254
```dotenv:no-line-numbers
2355
# Database
@@ -28,18 +60,31 @@ DATABASE_USER='postgres'
2860
DATABASE_PASSWORD='123456'
2961
```
3062

63+
### MySQL
64+
65+
```dotenv:no-line-numbers
66+
# Database
67+
DATABASE_TYPE='mysql'
68+
DATABASE_HOST='127.0.0.1'
69+
DATABASE_PORT=3306
70+
DATABASE_USER='root'
71+
DATABASE_PASSWORD='123456'
72+
```
73+
3174
## 解耦
3275

33-
在实际项目开发中,几乎不会存在同时兼容多种数据库的情况,我们在模型中使用 `with_variant` 尽可能的兼容 MySQL
34-
PostgreSQL,例如:
76+
在实际项目开发中,几乎不会存在同时兼容多种数据库的情况,我们在模型中使用 `with_variant` 尽可能的兼容 PostgreSQL
77+
MySQL,例如:
3578

3679
```python:no-line-numbers
37-
remark: Mapped[str | None] = mapped_column(LONGTEXT().with_variant(TEXT, 'postgresql')) # [!code word:with_variant]
80+
remark: Mapped[str | None] = mapped_column(sa.TEXT().with_variant(LONGTEXT, 'mysql')) # [!code word:with_variant]
3881
```
3982

83+
解耦步骤如下:
84+
4085
- 删除 `with_variant` 相关代码并且仅保留数据库对应的类型
4186
- 删除 `backend/core/conf.py` 文件中的 `DATABASE_TYPE` 及其相关的调用代码
4287
- 删除 `.env_example``.env` 文件中的 `DATABASE_TYPE`
4388
- 更新 `backend/templates/py/model.jinja` 文件中的 `database_type` 相关代码
44-
- 删除 `backend/sql` 目录中的 `mysql``postgresql` 文件夹
45-
- 删除 `docker-compose.yml` 文件中的 `fba_mysql``fba_postgres` 容器脚本
89+
- 删除 `backend/sql` 目录中的 `postgresql``mysql` 文件夹
90+
- 删除 `docker-compose.yml` 文件中的 `fba_postgres``fba_mysql` 容器脚本

docs/backend/reference/pk.md

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,58 +2,68 @@
22
title: 主键
33
---
44

5-
我们在 fba 中为数据库主键添加了两种选择,分别为传统模式(自增 ID)和雪花算法(雪花 ID),==我们在全局范围内使用自增
6-
ID 作为主键的默认声明方式=={.note}
5+
我们在 fba 中为数据库主键添加了两种选择,分别为传统模式(自增 ID)和雪花算法(雪花 ID),==我们在全局范围内使用 `自增 ID`
6+
作为主键的默认声明方式=={.note}
77

88
在切换主键声明方式之前,让我们先来简单了解一下它们的特性,再决定是否需要切换
99

1010
## 自增 ID
1111

12-
- 优点
12+
### 优点
1313

14-
简单易用,数据库(如MySQL)原生支持,生成顺序递增,查询效率高,占用空间小
14+
- 简单易用
15+
- 数据库原生支持
16+
- 生成顺序递增
17+
- 查询效率高
18+
- 占用空间小
1519

16-
- 局限性
20+
### 局限性
1721

18-
在分布式系统中可能出现 ID 冲突,扩展性较差;ID 生成依赖数据库,性能瓶颈风险较高;ID 可预测,可能暴露业务数据量或存在安全隐患
22+
- 在分布式系统中可能出现 ID 冲突,扩展性较差
23+
- ID 生成依赖数据库,性能瓶颈风险较高
24+
- ID 可预测,可能暴露业务数据量或存在安全隐患
1925

2026
## 雪花 ID
2127

22-
- 优点
28+
### 优点
2329

24-
分布式环境友好,ID 全局唯一且无需依赖中央数据库;包含时间戳,生成 ID 天然有序,便于排序和查询
30+
- 分布式环境友好
31+
- ID 全局唯一且无需依赖中央数据库
32+
- 包含时间戳,生成 ID 天然有序,便于排序和查询
2533

26-
- 局限性
34+
### 局限性
2735

28-
实现复杂,需额外维护生成器;可能因时间回拨(如服务器时钟同步问题)导致无法新增数据;ID 长度较长,存储和传输成本略高
36+
- 实现复杂,需额外维护生成器
37+
- 可能因时间回拨(如服务器时钟同步问题)导致无法新增数据
38+
- ID 长度较长,存储和传输成本略高
2939

3040
## 适用场景
3141

32-
- 自增 ID
42+
### 自增 ID
3343

34-
单机或中小规模应用,业务简单且对 ID 可预测性无敏感
44+
单机或中小规模应用,业务简单且对 ID 可预测性无敏感
3545

36-
- 雪花 ID
46+
### 雪花 ID
3747

38-
如果是分布式系统、微服务架构,或需要高并发、跨地域生成唯一 ID
48+
分布式系统、微服务架构,或需要高并发、跨地域生成唯一 ID
3949

4050
## 切换选择
4151

42-
- 自增 ID
52+
### 自增 ID
4353

44-
无需切换,这是 fba 内的全局默认声明方式
54+
无需切换,这是 fba 内的全局默认声明方式
4555

46-
- 雪花 ID
56+
### 雪花 ID
4757

48-
1. 更新 fba 内所有 sqlalchemy model 中的 `id: Mapped[id_key]``id: Mapped[snowflake_id_key]`
49-
2. 更新所有 `id_key` 导入为 `snowflake_id_key`
50-
3. 执行 `backend/sql/init_snowflake_test_data.sql` 脚本初始化测试数据
58+
1. 更新 fba 内所有 sqlalchemy model 中的 `id: Mapped[id_key]``id: Mapped[snowflake_id_key]`
59+
2. 更新所有 `id_key` 导入为 `snowflake_id_key`
60+
3. 执行 `backend/sql/init_snowflake_test_data.sql` 脚本初始化测试数据
5161

52-
::: caution Windows 平台警告
53-
如果您正在 Windows 平台中使用 mysql >= 8.0,还需要更新 `backend/database/db.py` 文件内的 `mysql+asyncmy`
54-
`mysql+aiomysql`,否则,您将无法在本地正常新增数据。相关
55-
issue:[asyncmy/issues/35](https://github.com/long2ice/asyncmy/issues/35)
56-
:::
62+
::: caution Windows 平台警告
63+
如果您正在 Windows 平台中使用 mysql >= 8.0,还需要更新 `backend/database/db.py` 文件内的 `mysql+asyncmy`
64+
`mysql+aiomysql`,否则,您将无法在本地正常新增数据。相关
65+
issue:[asyncmy/issues/35](https://github.com/long2ice/asyncmy/issues/35)
66+
:::
5767

5868
## 注意事项
5969

docs/backend/summary/quick-start.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@ fba 仅适用于资深 Python 后端开发人员,如果您是非资深用户
1313
1. 准备本地环境
1414

1515
- Python 3.10+
16-
- MySQL 8.0+ 或 PostgreSQL 16.0 +
16+
- PostgreSQL 16.0 + 或 MySQL 8.0+
1717
[雪花主键 ID 用户,请先移步到 **切换主键**](../reference/pk.md){.read-more}
18-
[PostgreSQL 用户,请先移步到 **切换数据库**](../reference/db.md){.read-more}
18+
[MySQL 用户,请先移步到 **切换数据库**](../reference/db.md){.read-more}
1919
- <p>Redis 推荐最新稳定版</p>
2020

2121
2. 创建数据库:`fba`
2222

23-
MySQL 用户请选择 utf8mb4 编码,PostgreSQL 用户直接创建即可
23+
- PostgreSQL 用户直接创建
24+
- MySQL 用户创建时需选择 utf8mb4 编码
2425

2526
3. 启动 Redis
2627
4. 准备源码 <Badge type="warning" text="二选一" />
@@ -171,7 +172,7 @@ fba 仅适用于资深 Python 后端开发人员,如果您是非资深用户
171172
172173
::: steps
173174
174-
1. 创建测试数据库 `fba_test`,选择 utf8mb4 编码,postgresql 用户可忽略编码
175+
1. 创建测试数据库 `fba_test`,选择 utf8mb4 编码,PostgreSQL 用户可忽略编码
175176
2. 创建数据库表,利用工具创建 `fba` 库所有表的 DDL 脚本,再通过 `fba_test` 库执行
176177
3. 初始化测试数据,通过 `backend/sql/` 目录下对应主键模式的脚本初始化测试数据
177178
4. 在项目根目录打开终端,执行以下单元测试命令

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"vuepress-theme-plume": "1.0.0-rc.172"
2727
},
2828
"dependencies": {
29-
"@iconify/json": "^2.2.395",
29+
"@iconify/json": "^2.2.396",
3030
"@vueuse/core": "^12.8.2",
3131
"mermaid": "^11.12.0",
3232
"swiper": "^12.0.2"

0 commit comments

Comments
 (0)