切换数据库
约 309 字大约 1 分钟
提示
此教程仅适用于 PostgreSQL 用户
fba 支持 MySQL、PostgreSQL 两种数据库,默认配置使用 MySQL
如果本地未安装 PostgreSQL,你可以使用以下命令创建 Docker 镜像
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默认配置
PostgreSQL 与 MySQL 在用户名、端口号等方面有所不同,如果你使用上面的命令创建了 Docker 镜像,需修改 .env 部分配置如下,否则,请根据 PostgreSQL 配置进行修改
# Database
DATABASE_TYPE='postgresql'
DATABASE_HOST='127.0.0.1'
DATABASE_PORT=5432
DATABASE_USER='postgres'
DATABASE_PASSWORD='123456'解耦
在实际项目开发中,几乎不会存在同时兼容多种数据库的情况,我们在模型中使用 with_variant 尽可能的兼容 MySQL 和 PostgreSQL,例如:
remark: Mapped[str | None] = mapped_column(LONGTEXT().with_variant(TEXT, 'postgresql')) - 删除
with_variant相关代码并且仅保留数据库对应的类型 - 删除
backend/core/conf.py文件中的DATABASE_TYPE及其相关的调用代码 - 删除
.env_example和.env文件中的DATABASE_TYPE - 更新
backend/templates/py/model.jinja文件中的database_type相关代码 - 删除
backend/sql目录中的mysql或postgresql文件夹 - 删除
docker-compose.yml文件中的fba_mysql或fba_postgres容器脚本



