phpBB3导入用户的Python脚本
2023-03-07 09:40:19 时间
关联的数据表
在phpBB3中导入用户时, 需要处理的有两张表, 一个是 users, 一个是 user_group.
如果是新安装的论坛, 在每次导入之前, 用以下语句初始化:
DELETE FROM phpbb_users WHERE user_id > 47; alter table phpbb_users auto_increment = 48; DELETE FROM phpbb_user_group where user_id > 48; DELETE FROM phpbb_user_group where user_id = 0;
需要的最小数据集
对于users表
需要的最小字段为 `user_type`, `group_id`, `user_permissions`, `user_ip`, `user_regdate`, `username`, `username_clean`, `user_lastvisit`, `user_lastmark`, `user_posts`, `user_lang`, `user_timezone`, `user_dateformat`, `user_style`, `user_sig`, `user_occ`, `user_interests`
如果是新安装的论坛, 进需要对这些字段动态赋值: `user_ip`, `user_regdate`, `username`, `username_clean`, `user_lastvisit`, `user_lastmark`, `user_posts`, `user_sig`
对于user_group表
每一个user添加默认注册用户对应的组记录, 对于新安装的论坛, 添加一条对应组2的记录
Python脚本
print("\n" + '######## Start:' + str(i) + ', limit:' + str(limit) + ' ########') users = tb_user_all.find().sort('registeredAt', 1).limit(limit).skip(i) for user in users: try: with rbcommon.mysqlclient.cursor() as cursor: if (user['nick'] == 'User Not Found'): sql = 'INSERT IGNORE INTO `phpbb_users` (`user_type`, `group_id`, `user_permissions`, `user_ip`, `user_regdate`, `username`, ' \ '`username_clean`, `user_lastvisit`, `user_lastmark`, `user_posts`, `user_lang`, `user_timezone`, ' \ '`user_dateformat`, `user_style`, `user_sig`, `user_occ`, `user_interests`) ' \ 'VALUES (0, 2, \'\', %s, %s, %s, %s, %s, %s, %s, \'en\', 8.00, \'|Y-m-d| G:i\', 1, %s, \'\', \'\')' cursor.execute(sql, ( user['ip'], user['registeredAt'], user['name'].strip(), user['_id'].strip(), user['registeredAt'], user['registeredAt'], user['posts'], '' if (not 'signature' in user) else user['signature'])) else: lastVisit = 0 if (user['lastLogin'] == ''): lastVisit = 0 else: lastVisit = int(time.mktime(time.strptime(user['lastLogin'], '%a %b %d %H:%M:%S %Y'))) if (lastVisit == 0) and (len(user['lastActive']) > 0): lastVisit = int(time.mktime(time.strptime(user['lastActive'], '%a %b %d %H:%M:%S %Y'))) sql = 'INSERT IGNORE INTO `phpbb_users` (`user_type`, `group_id`, `user_permissions`, `user_ip`, `user_regdate`, `username`, ' \ '`username_clean`, `user_lastvisit`, `user_lastmark`, `user_posts`, `user_lang`, `user_timezone`, ' \ '`user_dateformat`, `user_style`, `user_sig`, `user_occ`, `user_interests`) ' \ 'VALUES (0, 2, \'\', %s, %s, %s, %s, %s, %s, %s, \'en\', 8.00, \'|Y-m-d| G:i\', 1, %s, \'\', \'\')' cursor.execute(sql, ( user['ip'], user['registeredAt'], user['name'].strip(), user['_id'].strip(), lastVisit, lastVisit, user['posts'], '' if (not 'signature' in user) else user['signature'])) # phpbb_user_group lastId = cursor.lastrowid if (lastId == 0): print('Duplicate ID:>{}<'.format(user['name'])) rbcommon.mysqlclient.rollback() continue print(lastId) sql = 'INSERT IGNORE INTO `phpbb_user_group` (`group_id`, `user_id`, `group_leader`, `user_pending`) ' \ 'VALUES (2, %s, 0, 0)' cursor.execute(sql, (lastId)) rbcommon.mysqlclient.commit() except Exception as e: print(json.dumps(user)) traceback.print_exc()
.
导入结束后, 需要在后台首页, 重置全站的文章和用户统计数字.
.
相关文章
- Python的import语句笔记
- 这4种统计代码执行耗时,才足够优雅!
- GreenPlum的那些事《五》——浅谈GPDB中的资源队列
- 前后端分离 Vue + Egg.js + Mysql 的 JS全栈实践。动态菜单,RBAC权限模型,WebSocket实现站内信。已部署到线上!!!
- Pychram
- Spring中的定时器都会了?
- Python自学之路—位运算
- Python自学之路—条件、循环语句
- Python自学之路—变量与运算
- 开始着手用Python写一个游戏脚本
- python爬虫爬取QQ号
- HaaS轻应用之Python篇|阿里云产品内容精选(三十七)
- 作为2021年计算机初学者你必须要知道的上云那些事
- 一张图带你搞懂Node事件循环
- 全国41611个景点,用Python告诉你哪些地方更值得一游!
- python 来查 肯德基 address
- python 批量修改文件名
- 炸裂!上手三天,就在开发板上播放BadApple, 还是Python香
- [Python从零到壹] 一.为什么我们要学Python及基础语法详解
- 稳固执行计划