| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/usr/bin/env python3
- """
- 测试PostgreSQL数据库连接
- """
- import os
- import psycopg2
- from psycopg2.extras import RealDictCursor
- from dotenv import load_dotenv
- # 加载环境变量
- load_dotenv()
- def test_connection():
- """测试数据库连接"""
- try:
- # 从环境变量读取配置
- conn_params = {
- 'host': os.getenv('KNOWHUB_DB'),
- 'port': int(os.getenv('KNOWHUB_PORT', 5432)),
- 'user': os.getenv('KNOWHUB_USER'),
- 'password': os.getenv('KNOWHUB_PASSWORD'),
- 'database': os.getenv('KNOWHUB_DB_NAME'),
- }
- print("正在连接到PostgreSQL...")
- print(f"主机: {conn_params['host']}")
- print(f"端口: {conn_params['port']}")
- print(f"用户: {conn_params['user']}")
- print(f"数据库: {conn_params['database']}")
- print("-" * 50)
- # 建立连接
- conn = psycopg2.connect(**conn_params)
- cursor = conn.cursor(cursor_factory=RealDictCursor)
- # 测试查询
- cursor.execute("SELECT version();")
- version = cursor.fetchone()
- print(f"✅ 连接成功!")
- print(f"PostgreSQL版本: {version['version']}")
- print("-" * 50)
- # 检查pgvector扩展
- cursor.execute("""
- SELECT * FROM pg_extension WHERE extname = 'vector';
- """)
- pgvector = cursor.fetchone()
- if pgvector:
- print(f"✅ pgvector扩展已安装: {pgvector['extversion']}")
- else:
- print("⚠️ pgvector扩展未安装,需要先安装才能存储向量")
- print(" 安装命令: CREATE EXTENSION vector;")
- print("-" * 50)
- # 列出所有表
- cursor.execute("""
- SELECT tablename FROM pg_tables
- WHERE schemaname = 'public'
- ORDER BY tablename;
- """)
- tables = cursor.fetchall()
- if tables:
- print(f"数据库中的表 ({len(tables)}个):")
- for table in tables:
- print(f" - {table['tablename']}")
- else:
- print("数据库中暂无表")
- cursor.close()
- conn.close()
- print("-" * 50)
- print("✅ 测试完成,连接正常!")
- return True
- except Exception as e:
- print(f"❌ 连接失败: {e}")
- return False
- if __name__ == "__main__":
- test_connection()
|