42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
|
|
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())
|