2025-06-17 19:55:10 +08:00

36 lines
1.1 KiB
Python

from sqlmodel import create_engine, SQLModel
from sqlalchemy.pool import QueuePool
from sqlalchemy import text
from app.models import UserRole, OrderStatus
import time
def wait_for_db(max_retries=5, delay=5):
"""等待数据库连接可用"""
for i in range(max_retries):
try:
test_engine = create_engine(
"mysql+pymysql://root:123456@niit-node3/orders_db",
poolclass=QueuePool,
pool_size=10,
max_overflow=20,
pool_timeout=30,
pool_recycle=3600,
echo=False
)
with test_engine.connect() as conn:
conn.execute(text("SELECT 1"))
print(f"数据库连接测试成功 (尝试 {i+1}/{max_retries})")
return test_engine
except Exception as e:
if i == max_retries - 1:
raise
time.sleep(delay)
return None
# 使用连接池的数据库引擎
engine = wait_for_db()
# 创建数据库表
def init_db():
SQLModel.metadata.create_all(engine)