别等被骂才后悔:APP上线前,一定要把SQLite换成PostgreSQL,附 FastAPI对接代码

40 阅读4分钟

fIX3sbdke

还在用 SQLite 吗?

当用户量增高,你会发现数据存不住、并发扛不住、扩展没门路,连夜改架构的滋味谁懂?

别慌!这篇文章带你从 0 到 1 升级 PostgreSQL 生产级数据库,对接 FastAPI 一步到位,彻底解决你的数据库焦虑!

为什么 SQLite 会不再够用?

在项目初期,SQLite 确实是完美选择。

它轻量、简单、无需单独部署。我的 FastAPI 应用在本地运行流畅,测试数据完美存储,一切都那么美好。

但 SQLite 的局限性也很明显:

  1. 并发写入瓶颈:同一时间只能有一个写入操作
  2. 缺乏网络接口:无法支持多应用实例同时访问
  3. 扩展性限制:单机性能上限很快触顶

当你的用户量快速增长,或者需要支撑企业级应用的稳定运行时,MySQL、PostgreSQL 这类专业生产级数据库才是正解

它们专注于可扩展性、并发控制和数据安全,运行在独立服务器上,能轻松应对大规模业务场景。

从 SQLite 到 PostgreSQL 的 3 大痛点

想切换到 PostgreSQL,很多开发者会卡在这三道坎:

  1. 环境搭建难:不知道怎么在 Mac 上安装配置,命令行操作容易出错
  2. 可视化操作懵:纯命令行管理数据太麻烦,图形化工具不会用
  3. 应用对接愁:好不容易装好数据库,却不知道怎么和 FastAPI 打通

别担心,接下来的步骤帮你逐一击破这些难题。

PostgreSQL 从安装到对接 FastAPI 全流程

我们以 Mac 系统为例,手把手完成 PostgreSQL 生产级部署,还会对接 FastAPI 应用。

01、安装 PostgreSQL

安装 PostgreSQL 推荐使用 Postgres.app,Postgres.app 是 macOS 上安装 Postgres 最简单的方法。

访问 postgresapp.com/downloads.h…

Postgres.app 安装可以参考官网。postgresapp.com/

image-20260115214649587

图中的命令,我贴在下面了

sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp
02、安装图形化管理工具 pgAdmin4

访问 www.pgadmin.org/download/ 下载 mac 版本。

安装后打开,首次启动设置密码。

接着注册服务器 右键 “Server” - Register - Server

Name:TodoApplicationServer
Host name/address:127.0.0.1(或localhost)
Port:5432
Username:postgres
Password:test1234

填写完,点 “Save” 保存。

03、创建生产级数据库和数据表

创建数据库

  1. 右键 DatabasesCreateDatabase
  2. 名称:TodoApplicationDatabase

创建数据表

展开 TodoApplicationDatabase → Schemas → public → Tables

打开 SQL 编辑窗口,执行以下 SQL 语句,创建用户表和待办事项表:

CREATE TABLE users (
  id SERIAL, 
  email VARCHAR(200) DEFAULT NULL, 
  username VARCHAR(45) DEFAULT NULL, 
  first_name VARCHAR(45) DEFAULT NULL, 
  last_name VARCHAR(45) DEFAULT NULL, 
  hashed_password VARCHAR(200) DEFAULT NULL, 
  is_active BOOLEAN DEFAULT NULL, 
  role VARCHAR(45) DEFAULT NULL, 
  PRIMARY KEY (id)
);

CREATE TABLE todos (
  id SERIAL,
  title VARCHAR(200) DEFAULT NULL, 
  description VARCHAR(200) DEFAULT NULL, 
  priority INTEGER DEFAULT NULL, 
  complete BOOLEAN DEFAULT NULL, 
  owner_id INTEGER DEFAULT NULL, 
  PRIMARY KEY (id), 
  FOREIGN KEY(owner_id) REFERENCES users (id)
);

执行完成后,刷新 Tables,就能看到 users 和 todos 两张表

可以使用下面 sql 查看表字段

SELECT * FROM todos;
SELECT * FROM users;
04、对接 FastAPI,实现数据互通

安装数据库依赖

在终端执行命令安装 psycopg2-binary:

pip install psycopg2-binary -i https://pypi.tuna.tsinghua.edu.cn/simple

修改数据库连接配置(database.py)

SQLALCHEMY_DATABASE_URL = "postgresql://postgres:test1234@localhost/TodoApplicationDatabase"

# 删除 connect arguments
engine = create_engine(SQLALCHEMY_DATABASE_URL)

验证数据互通

切回 Swagger UI 页面,刷新页面,找到 POST /auth 接口,分别添加如下两个用户信息。

{
  "username": "wangerge",
  "email": "wangerge@email.com",
  "first_name": "erge",
  "last_name": "wang",
  "password": "test1234",
  "role": "admin"
}

{
  "username": "userone",
  "email": "userone@email.com",
  "first_name": "one",
  "last_name": "user",
  "password": "test1234",
  "role": ""
}

再切回 pgAdmin4 使用 SQL 查看数据。

SELECT * FROM users;

image-20260116224501844

此时 users 表,已经有数据了。

再切回 Swagger UI 页面,刷新页面,找到 POST /todo 接口,添加一条待办事项。

{
  "title": "Learn FastAPI",
  "description": "Because it's awesome",
  "priority": 5,
  "complete": false
}

再切回 pgAdmin4 使用 SQL 查看数据。

SELECT * FROM todos;

image-20260116224526456

此时 todos 表,已经有数据了。

至此,我们的 FastAPI 应用程序已经升级到了 postgreSQL 数据库。

写在最后

从 SQLite 切换到 PostgreSQL,不是简单的工具替换,而是你的应用从 “小打小闹” 到 “稳定投产” 的关键一步。

如果你正在做应用扩容,这篇文章的步骤可以直接照搬。

想要获取文章中的安装包,请在评论区回复 【FastAPI】

关于 FastAPI 的其他疑问

你的API在裸奔?踩坑8小时,从“越权裸奔”到“权限严控”:FastAPI+JWT+依赖注入,这套方案闭眼抄

你的APP要用户反复登录?密码传来传去?FastAPI+JWT实战,一个令牌全打通,安全与体验兼得,代码直接抄

FastAPI 新手紧急避坑:10分钟搞定用户认证4大坑,代码复制即用

“警惕!FastAPI接口一夜「消失」” 95%程序员靠这招自救:我的路由分离血泪史

10分钟搞定FastAPI中“数据库连接管理、参数校验、文档维护”三大核心难题,让新手也能轻松地写出可落地的API

相关内容我都给大家做好了,感兴趣的朋友来「我的主页」找一找,直接就可以看到。

关注我,每天分享「Python」、「职场」有趣干货,千万不要错过!