File size: 2,194 Bytes
559f768
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import os
from dotenv import load_dotenv
from supabase import create_client, Client
import asyncio

# 加载环境变量
load_dotenv()

# Supabase 配置
SUPABASE_URL = os.getenv("SUPABASE_URL")
SUPABASE_KEY = os.getenv("SUPABASE_KEY")

async def read_api_keys_from_supabase(model_name: str = None, limit: int = None):
    """
    从 Supabase 的 airs_model_api_keys_view 视图中读取 API 密钥。
    """
    if not SUPABASE_URL or not SUPABASE_KEY:
        print("错误:SUPABASE_URL 或 SUPABASE_KEY 未在 .env 文件中配置。")
        return None

    try:
        supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY)
        print(f"已连接到 Supabase: {SUPABASE_URL}")
        print('supabase', supabase)

        print(f"尝试从 Supabase 获取 API 密钥,模型名称: {model_name if model_name else '所有模型'}{f', 限制: {limit}' if limit else ''}")

        query = supabase.from_('airs_model_api_keys_view').select('api_key,model_name')

        if model_name:
            query = query.eq('model_name', model_name)
        
        if limit:
            query = query.limit(limit)

        response = query.execute()

        if response.data:
            print("\n成功从 Supabase 获取数据:")
            for item in response.data:
                print(f"  API Key: {item.get('api_key')}, Model Name: {item.get('model_name')}")
            return response.data
        else:
            print("\n从 Supabase 获取数据成功,但未找到匹配的 API 密钥。")
            return None
    except Exception as e:
        print(f"\n从 Supabase 获取 API 密钥失败: {e}")
        return None

async def main():
    print("--- 测试获取所有 API 密钥 ---")
    await read_api_keys_from_supabase()

    print("\n--- 测试获取特定模型 (glm-4-flash) 的 API 密钥 ---")
    await read_api_keys_from_supabase('glm-4-flash')

    print("\n--- 测试获取特定模型 (gemini-2.5-flash) 的 API 密钥 ---")
    await read_api_keys_from_supabase('gemini-2.5-flash')

    print("\n--- 测试获取前 5 条 API 密钥 ---")
    await read_api_keys_from_supabase(limit=5)

if __name__ == "__main__":
    asyncio.run(main())