phpBB3导入用户的Python脚本

Posted Milton

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpBB3导入用户的Python脚本相关的知识,希望对你有一定的参考价值。

关联的数据表

在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("
" + ‘######## 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()

.

导入结束后, 需要在后台首页, 重置全站的文章和用户统计数字.

 

.

以上是关于phpBB3导入用户的Python脚本的主要内容,如果未能解决你的问题,请参考以下文章

phpBB3.0.X导入版面的Python脚本

常用python日期日志获取内容循环的代码片段

Python如何调用别人写好的脚本

phpBB3.2开发环境配置

如何将需要导入模块的python脚本转换为Windows中的可执行文件

phpBB3 - 不要为某些邮件服务发送激活邮件