扫码登录,获取cookies
This commit is contained in:
75
create_sqlite_db.py
Normal file
75
create_sqlite_db.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
创建 SQLite 数据库并初始化表结构
|
||||
"""
|
||||
import sqlite3
|
||||
import os
|
||||
import bcrypt
|
||||
from uuid import uuid4
|
||||
|
||||
DB_PATH = "weibo_hotsign.db"
|
||||
SQL_FILE = "init-db-sqlite.sql"
|
||||
|
||||
def hash_password(password: str) -> str:
|
||||
"""使用 bcrypt 加密密码"""
|
||||
salt = bcrypt.gensalt(rounds=12)
|
||||
hashed = bcrypt.hashpw(password.encode('utf-8'), salt)
|
||||
return hashed.decode('utf-8')
|
||||
|
||||
def create_database():
|
||||
"""创建数据库并执行初始化脚本"""
|
||||
# 如果数据库已存在,先删除
|
||||
if os.path.exists(DB_PATH):
|
||||
print(f"数据库文件 {DB_PATH} 已存在,正在删除...")
|
||||
os.remove(DB_PATH)
|
||||
|
||||
# 创建新数据库
|
||||
print(f"正在创建数据库 {DB_PATH}...")
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
cursor = conn.cursor()
|
||||
|
||||
# 读取并执行 SQL 脚本
|
||||
print(f"正在执行初始化脚本 {SQL_FILE}...")
|
||||
with open(SQL_FILE, 'r', encoding='utf-8') as f:
|
||||
sql_script = f.read()
|
||||
|
||||
cursor.executescript(sql_script)
|
||||
conn.commit()
|
||||
|
||||
# 创建测试用户
|
||||
print("\n正在创建测试用户...")
|
||||
test_user_id = str(uuid4())
|
||||
test_username = "admin"
|
||||
test_email = "admin@example.com"
|
||||
test_password = "Admin123!" # 符合密码强度要求
|
||||
hashed_password = hash_password(test_password)
|
||||
|
||||
cursor.execute("""
|
||||
INSERT INTO users (id, username, email, hashed_password, is_active)
|
||||
VALUES (?, ?, ?, ?, 1)
|
||||
""", (test_user_id, test_username, test_email, hashed_password))
|
||||
|
||||
conn.commit()
|
||||
|
||||
# 验证表是否创建成功
|
||||
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
|
||||
tables = cursor.fetchall()
|
||||
|
||||
print("\n" + "="*50)
|
||||
print("数据库创建成功!")
|
||||
print("="*50)
|
||||
print("\n已创建的表:")
|
||||
for table in tables:
|
||||
print(f" ✓ {table[0]}")
|
||||
|
||||
print("\n测试用户信息:")
|
||||
print(f" 用户名: {test_username}")
|
||||
print(f" 邮箱: {test_email}")
|
||||
print(f" 密码: {test_password}")
|
||||
print(f" 用户ID: {test_user_id}")
|
||||
|
||||
conn.close()
|
||||
print(f"\n数据库文件路径: {os.path.abspath(DB_PATH)}")
|
||||
print("\n提示: 你可以使用上述测试账号登录,或通过注册页面创建新用户")
|
||||
|
||||
if __name__ == "__main__":
|
||||
create_database()
|
||||
Reference in New Issue
Block a user