Spaces:
Sleeping
Sleeping
当然,以下是完整的SQL语句,用于创建api_names
、api_keys
表,以及可选的api_usage
表。这些表将支持存储API名称、API-KEY信息,并可选地记录API的使用情况。
SQL 创建表的语句
-- 创建 users 表
DROP TABLE IF EXISTS "users";
CREATE TABLE "users" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"username" TEXT NOT NULL,
"password" TEXT NOT NULL,
"email" TEXT NOT NULL,
"nikename" TEXT,
"created_at" DATETIME DEFAULT CURRENT_TIMESTAMP,
"updated_at" DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE ("username" ASC),
UNIQUE ("email" ASC)
);
-- 创建api_groups表
CREATE TABLE api_groups (
id INTEGER PRIMARY KEY AUTOINCREMENT,
group_name TEXT NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 创建api_names表
CREATE TABLE api_names (
id INTEGER PRIMARY KEY AUTOINCREMENT,
api_name TEXT NOT NULL UNIQUE,
api_group_id INTEGER,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (api_group_id) REFERENCES api_groups(id) ON DELETE SET NULL
);
-- 创建api_keys表
CREATE TABLE api_keys (
id INTEGER PRIMARY KEY AUTOINCREMENT,
api_group_id INTEGER NOT NULL,
api_key TEXT NOT NULL,
category TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (api_group_id) REFERENCES api_groups(id) ON DELETE CASCADE
);
-- 创建user_api_keys表
CREATE TABLE user_api_keys (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_api_key TEXT NOT NULL,
user_id INTEGER,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 创建api_usage表(如果需要)
CREATE TABLE api_usage (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_api_key_id INTEGER,
api_key_id INTEGER,
request_count INTEGER DEFAULT 0,
last_used DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_api_key_id) REFERENCES user_api_keys(id),
FOREIGN KEY (api_key_id) REFERENCES api_keys(id)
);
说明
api_names
表:存储唯一的API名称。api_keys
表:存储每个API名称对应的多个API-KEY,包括分类信息。api_names_id
作为外键,关联到api_names
表。user_api_keys
表:存储用户的API-KEY。api_usage
表(可选):记录API的使用情况,包括请求次数和最后使用时间。这个表可以用来监控API的使用情况,帮助管理API-KEY的使用限额。
这些SQL语句假设你使用的是MySQL数据库。如果你使用的是其他类型的数据库(如PostgreSQL、SQLite等),可能需要对SQL语句进行适当的调整。如果有任何问题或需要进一步的帮助,请随时告诉我。
通过 api_name 查询 api_key 的 SQL 语句
SELECT ak.api_key
FROM api_keys ak
JOIN api_groups ag ON ak.api_group_id = ag.id
JOIN api_names an ON an.api_group_id = ag.id
WHERE an.api_name = 'your_api_name';