新建小程序后端,新建数据库

This commit is contained in:
ChengCan
2026-03-25 15:58:48 +08:00
parent 7510ca6df1
commit 5a45ee1106
8 changed files with 401 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
from functools import lru_cache
from urllib.parse import quote_plus
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
extra="ignore",
)
app_name: str = Field(default="mini-program-api", validation_alias="APP_NAME")
app_version: str = Field(default="0.1.0", validation_alias="APP_VERSION")
app_description: str = Field(
default="Backend service for mini program",
validation_alias="APP_DESCRIPTION",
)
host: str = Field(default="0.0.0.0", validation_alias="HOST")
port: int = Field(default=8001, validation_alias="PORT")
db_host: str = Field(default="127.0.0.1", validation_alias="DB_HOST")
db_port: int = Field(default=3306, validation_alias="DB_PORT")
db_user: str = Field(default="root", validation_alias="DB_USER")
db_password: str = Field(default="", validation_alias="DB_PASSWORD")
db_name: str = Field(default="mini_program", validation_alias="DB_NAME")
@property
def mysql_dsn(self) -> str:
user = quote_plus(self.db_user)
password = quote_plus(self.db_password)
auth = f"{user}:{password}" if password else user
return (
f"mysql+pymysql://{auth}@{self.db_host}:{self.db_port}/"
f"{self.db_name}?charset=utf8mb4"
)
@lru_cache(maxsize=1)
def get_settings() -> Settings:
return Settings()
settings = get_settings()