You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
912 B
31 lines
912 B
import os
|
|
from dotenv import load_dotenv
|
|
from sqlalchemy import URL, create_engine
|
|
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
|
from sqlalchemy.orm import declarative_base, sessionmaker
|
|
|
|
# 加载环境变量
|
|
load_dotenv()
|
|
|
|
# 从环境变量获取数据库配置
|
|
DB_USER = os.getenv('DB_USER', 'root')
|
|
DB_PASSWORD = os.getenv('DB_PASSWORD', 'abc123')
|
|
DB_HOST = os.getenv('DB_HOST', 'localhost')
|
|
DB_PORT = os.getenv('DB_PORT', '3306')
|
|
DB_NAME = os.getenv('DB_NAME', 'dashboard')
|
|
|
|
uri = f'mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}'
|
|
|
|
engine = create_engine(uri)
|
|
session = sessionmaker(bind=engine)
|
|
|
|
async_uri = f'mysql+aiomysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}'
|
|
async_engine = create_async_engine(async_uri)
|
|
asyncSession = sessionmaker(
|
|
bind=async_engine,
|
|
class_=AsyncSession,
|
|
expire_on_commit=False
|
|
)
|
|
|
|
Base = declarative_base()
|