hxf/backend/check_db_constraint.py

42 lines
1.6 KiB
Python
Raw Normal View History

2026-01-07 11:30:54 +08:00
from sqlalchemy import create_engine, inspect
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
import asyncio
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
async def check_table_constraints():
try:
# 获取数据库连接字符串
DATABASE_URL = os.getenv("DATABASE_URL", "mysql+asyncmy://root:123456@localhost:3306/th_agenter")
# 创建异步引擎
engine = create_async_engine(DATABASE_URL, echo=True)
# 创建会话
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
async with async_session() as session:
# 获取数据库连接
async with session.begin():
# 使用inspect查看表结构
inspector = inspect(engine)
# 获取messages表的所有约束
constraints = await engine.run_sync(inspector.get_table_constraints, 'messages')
print("Messages表的所有约束:")
for constraint in constraints:
print(f" 约束名称: {constraint['name']}, 类型: {constraint['type']}")
if constraint['type'] == 'PRIMARY KEY':
print(f" 主键约束列: {constraint['constrained_columns']}")
except Exception as e:
print(f"检查约束时出错: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
asyncio.run(check_table_constraints())