diff --git a/backend/app/config/setting.py b/backend/app/config/setting.py index 99373ba8a632a87bfa224d4bcea60d9e4d360f60..12c563e263ceeb1c4847fd27bb4fe8e9a82f6361 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 7cfac2abcde52d1c37dc83cc02097228ebfe4698..ccdae7631b458037b0cd6dcf8c0ffe511e2dd855 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 3fe2f1db23afcbd234c8f0411573d6fec2d75385..84694e92e4a4274f111fbbde56131ea6c87a4ef1 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 2b23c5c485fe40b6933b81eb5fa11dba862bac65..84e78c506b4a1b5b1841900782956ae519cceffd 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