本目录包含用于初始化数据库的脚本,包括用户认证相关的表和微信用户表等。
用户数据现在存储在PostgreSQL数据库中,表名为users
。有两种方式可以初始化用户表:
运行以下命令可以自动创建用户表和相关索引:
# 在项目根目录执行
python app/scripts/init_db.py
这将自动创建以下内容:
如果你想直接在PostgreSQL客户端中执行,可以使用提供的SQL脚本:
# 使用psql命令行工具执行
psql -U postgres -d dataops -f app/scripts/create_user_table.sql
# 或者直接在pgAdmin或其他PostgreSQL客户端中复制粘贴脚本内容执行
数据库连接配置在app/core/system/auth.py
文件中的get_pg_connection
函数中定义:
pg_pool = psycopg2.pool.SimpleConnectionPool(
1, 20,
host="localhost",
database="dataops",
user="postgres",
password="postgres",
port="5432"
)
在生产环境中,建议将这些连接参数移至配置文件或环境变量中。
用户表(users
)具有以下字段:
id
(VARCHAR(100)): 用户唯一标识符,主键username
(VARCHAR(50)): 用户名,唯一非空password
(VARCHAR(100)): 密码(使用base64编码),非空created_at
(FLOAT): 创建时间戳,非空last_login
(FLOAT): 最后登录时间戳is_admin
(BOOLEAN): 是否为管理员,默认为false如果您之前使用的是文件存储方式,可以使用以下命令将用户数据迁移到数据库:
python app/scripts/migrate_users.py
这个脚本会:
app/data/users.json
文件中的用户数据users
表中在生产环境中,建议进行以下安全增强:
微信用户数据存储在PostgreSQL数据库中,表名为wechat_users
。有以下几种方式可以初始化微信用户表:
运行以下命令可以在Flask应用上下文中创建微信用户表:
# 在项目根目录执行
python app/scripts/create_wechat_user_table.py --action create
检查表是否存在:
python app/scripts/create_wechat_user_table.py --action check
删除表(谨慎使用):
python app/scripts/create_wechat_user_table.py --action drop
运行以下命令可以直接通过psycopg2连接数据库创建表:
# 在项目根目录执行
python app/scripts/migrate_wechat_users.py --action migrate
回滚表(删除表):
python app/scripts/migrate_wechat_users.py --action rollback
如果你想直接在PostgreSQL客户端中执行,可以使用提供的SQL脚本:
# 使用psql命令行工具执行
psql -U postgres -d dataops -f database/create_wechat_users.sql
# 或者直接在pgAdmin或其他PostgreSQL客户端中复制粘贴脚本内容执行
微信用户表(wechat_users
)具有以下字段:
id
(SERIAL): 主键ID,自增wechat_code
(VARCHAR(255)): 微信授权码/openid,唯一标识,非空且唯一phone_number
(VARCHAR(20)): 用户手机号码,可选id_card_number
(VARCHAR(18)): 用户身份证号码,可选login_status
(BOOLEAN): 当前登录状态,默认false,非空login_time
(TIMESTAMP WITH TIME ZONE): 最后登录时间user_status
(VARCHAR(20)): 用户账户状态,默认'active',非空
active
: 活跃inactive
: 非活跃suspended
: 暂停deleted
: 已删除created_at
(TIMESTAMP WITH TIME ZONE): 账户创建时间,默认当前时间,非空updated_at
(TIMESTAMP WITH TIME ZONE): 信息更新时间,默认当前时间,非空为了提高查询性能,表包含以下索引:
idx_wechat_users_wechat_code
: 微信授权码索引idx_wechat_users_phone_number
: 手机号码索引idx_wechat_users_login_status
: 登录状态索引idx_wechat_users_user_status
: 用户状态索引表包含自动更新updated_at
字段的触发器,每次更新记录时会自动设置为当前时间。
在代码中可以使用以下方式操作微信用户:
from app.core.data_parse.calendar import (
register_wechat_user,
login_wechat_user,
logout_wechat_user,
get_wechat_user_info,
update_wechat_user_info
)
# 注册用户
result = register_wechat_user("wx_openid_123", "13800138000", "110101199001011234")
# 用户登录
result = login_wechat_user("wx_openid_123")
# 用户登出
result = logout_wechat_user("wx_openid_123")
# 获取用户信息
result = get_wechat_user_info("wx_openid_123")
# 更新用户信息
result = update_wechat_user_info("wx_openid_123", {"phone_number": "13900139000"})