From caac6ecb78fa9b96758f12c3bc3dddbda7577ea2 Mon Sep 17 00:00:00 2001 From: Haoqibb Date: Thu, 24 Jul 2025 16:31:00 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9postgresql?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/config/setting.py | 17 +++++++++++++++-- backend/env/.env.dev | 11 +++++++++-- backend/env/.env.prod | 7 +++++++ backend/requirements.txt | 2 +- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/backend/app/config/setting.py b/backend/app/config/setting.py index 99373ba..12c563e 100755 --- a/backend/app/config/setting.py +++ b/backend/app/config/setting.py @@ -110,6 +110,13 @@ class Settings(BaseSettings): MYSQL_PORT: int MYSQL_DB_NAME: str + # POSTGRESQL数据库连接 + POSTGRESQL_USER: str + POSTGRESQL_PASSWORD: str + POSTGRESQL_HOST: str + POSTGRESQL_PORT: int + POSTGRESQL_DB_NAME: str + # ================================================= # # ******************** MongoDB配置 ******************* # # ================================================= # @@ -243,12 +250,15 @@ class Settings(BaseSettings): @property def DB_URI(self) -> str: """获取数据库连接""" - supported_db_drivers = ("sqlite", "mysql") + supported_db_drivers = ("sqlite", "mysql", "postgresql") if settings.DB_DRIVER not in supported_db_drivers: raise ValueError(f"数据库驱动不支持: {settings.DB_DRIVER}, 请选择 {supported_db_drivers}") if settings.DB_DRIVER == "mysql": MYSQL_URI: MySQLDsn = f"mysql+asyncmy://{settings.MYSQL_USER}:{settings.MYSQL_PASSWORD}@{settings.MYSQL_HOST}:{settings.MYSQL_PORT}/{settings.MYSQL_DB_NAME}?charset=utf8mb4" return MYSQL_URI + if settings.DB_DRIVER == "postgresql": + POSTGRESQL_URI: str = f"postgresql+asyncpg://{settings.POSTGRESQL_USER}:{settings.POSTGRESQL_PASSWORD}@{settings.POSTGRESQL_HOST}:{settings.POSTGRESQL_PORT}/{settings.POSTGRESQL_DB_NAME}" + return POSTGRESQL_URI else: SQLITE_URI: str = f"sqlite+aiosqlite:///{settings.BASE_DIR.joinpath(settings.SQLITE_DB_NAME)}?characterEncoding=UTF-8" return SQLITE_URI @@ -258,12 +268,15 @@ class Settings(BaseSettings): @property def DATABASES_URI(self) -> str: """获取数据库连接""" - supported_db_drivers = ("sqlite", "mysql") + supported_db_drivers = ("sqlite", "mysql", "postgresql") if settings.DB_DRIVER not in supported_db_drivers: raise ValueError(f"数据库驱动不支持: {settings.DB_DRIVER}, 请选择 {supported_db_drivers}") if settings.DB_DRIVER == "mysql": MYSQL_URI: MySQLDsn = f"mysql+pymysql://{settings.MYSQL_USER}:{settings.MYSQL_PASSWORD}@{settings.MYSQL_HOST}:{settings.MYSQL_PORT}/{settings.MYSQL_DB_NAME}?charset=utf8mb4" return MYSQL_URI + if settings.DB_DRIVER == "postgresql": + POSTGRESQL_URI: str = f"postgresql+asyncpg://{settings.POSTGRESQL_USER}:{settings.POSTGRESQL_PASSWORD}@{settings.POSTGRESQL_HOST}:{settings.POSTGRESQL_PORT}/{settings.POSTGRESQL_DB_NAME}" + return POSTGRESQL_URI else: SQLITE_URI: str = f"sqlite:///{settings.BASE_DIR.joinpath(settings.SQLITE_DB_NAME)}?characterEncoding=UTF-8" return SQLITE_URI diff --git a/backend/env/.env.dev b/backend/env/.env.dev index 7cfac2a..ccdae76 100644 --- a/backend/env/.env.dev +++ b/backend/env/.env.dev @@ -29,7 +29,7 @@ ROOT_PATH = "/api/v1" # API路由前缀 DEMO_ENABLE = False # 是否启用演示模式 # 数据库配置 -DB_DRIVER = "mysql" # sqlite、mysql +DB_DRIVER = "postgresql" # sqlite、mysql、postgresql # SQLite配置 SQLITE_DB_NAME = "dev_sql.db" @@ -39,7 +39,14 @@ MYSQL_HOST = "localhost" MYSQL_USER = "root" MYSQL_PASSWORD = "ServBay.dev" MYSQL_PORT = 3306 -MYSQL_DB_NAME = "fastapi_vue_admin" +MYSQL_DB_NAME = "fastapi_vue3_admin" + +# POSTGRESQL配置 +POSTGRESQL_HOST = "localhost" +POSTGRESQL_USER = "postgres" +POSTGRESQL_PASSWORD = "ly202001" +POSTGRESQL_PORT = 5432 +POSTGRESQL_DB_NAME = "fastapi-vue3-admin" # Redis配置 REDIS_ENABLE = True diff --git a/backend/env/.env.prod b/backend/env/.env.prod index 3fe2f1d..84694e9 100644 --- a/backend/env/.env.prod +++ b/backend/env/.env.prod @@ -41,6 +41,13 @@ MYSQL_PASSWORD = "FastApi123abc" MYSQL_PORT = 3306 MYSQL_DB_NAME = "fastapi_vue3_admin" +# POSTGRESQL配置 +POSTGRESQL_HOST = "localhost" +POSTGRESQL_USER = "postgres" +POSTGRESQL_PASSWORD = "FastApi123abc" +POSTGRESQL_PORT = 5432 +POSTGRESQL_DB_NAME = "fastapi_vue3_admin" + # Redis配置 REDIS_ENABLE = True REDIS_HOST = "172.18.52.77" diff --git a/backend/requirements.txt b/backend/requirements.txt index 2b23c5c..84e78c5 100755 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -28,7 +28,7 @@ aioredis==2.0.1 # redis 异步操作数据库 aiosqlite==0.17.0 # sqlite 异步操作数据库 asyncmy==0.2.9 # mysql 异步操作数据库:基于 mysqlclient:asyncmy 是 mysqlclient 的异步版本,mysqlclient 是一个 C 语言编写的 MySQL 客户端,性能较高。性能:asyncmy 通常在性能上优于 aiomysql,特别是在高并发和大数据量的场景下。 motor==3.6.0 # mongodb 驱动 -# asyncpg==0.30.0 # postgresql 异步操作数据库基于 psycopg2:asyncpg 是 psycopg2 的异步版本,psycopg2 是一个 pure-Python PostgreSQL 数据库适配器。性能:asyncpg 通常在性能上优于 psycopg2,特别是在高并发和大数据量的场景下。 +asyncpg==0.30.0 # postgresql 异步操作数据库基于 psycopg2:asyncpg 是 psycopg2 的异步版本,psycopg2 是一个 pure-Python PostgreSQL 数据库适配器。性能:asyncpg 通常在性能上优于 psycopg2,特别是在高并发和大数据量的场景下。 # aiomysql==0.2.0 # mysql 异步操作数据库基于 pymysql:aiomysql 是 pymysql 的异步版本,pymysql 是一个纯 Python 实现的 MySQL 客户端。成熟度:aiomysql 相对较为成熟,社区支持较好,文档也比较完善。 cryptography==45.0.2 # mysql8 密码加密 mkdocs -- Gitee From de0b6057da4ba0e08a2c69022c43ca2890811683 Mon Sep 17 00:00:00 2001 From: Haoqibb Date: Thu, 24 Jul 2025 16:40:08 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9postgresql?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/env/.env.dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/env/.env.dev b/backend/env/.env.dev index ccdae76..452a6af 100644 --- a/backend/env/.env.dev +++ b/backend/env/.env.dev @@ -44,7 +44,7 @@ MYSQL_DB_NAME = "fastapi_vue3_admin" # POSTGRESQL配置 POSTGRESQL_HOST = "localhost" POSTGRESQL_USER = "postgres" -POSTGRESQL_PASSWORD = "ly202001" +POSTGRESQL_PASSWORD = "ServBay.dev" POSTGRESQL_PORT = 5432 POSTGRESQL_DB_NAME = "fastapi-vue3-admin" -- Gitee From ad195d7625f5d322e2e8204a5fec8419bb28753c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=BD=E5=A5=87=E5=AE=9D=E5=AE=9D?= <11259906+haoqibb@user.noreply.gitee.com> Date: Thu, 24 Jul 2025 08:49:54 +0000 Subject: [PATCH 3/3] update backend/env/.env.dev. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 好奇宝宝 <11259906+haoqibb@user.noreply.gitee.com> --- backend/env/.env.dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/env/.env.dev b/backend/env/.env.dev index 452a6af..6436d9e 100644 --- a/backend/env/.env.dev +++ b/backend/env/.env.dev @@ -29,7 +29,7 @@ ROOT_PATH = "/api/v1" # API路由前缀 DEMO_ENABLE = False # 是否启用演示模式 # 数据库配置 -DB_DRIVER = "postgresql" # sqlite、mysql、postgresql +DB_DRIVER = "sqlite" # sqlite、mysql、postgresql # SQLite配置 SQLITE_DB_NAME = "dev_sql.db" -- Gitee