关联的数据表

在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()

.

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

.

phpBB3导入用户的Python脚本的更多相关文章

  1. phpBB3导入帖子的Python脚本

    关联的数据表 在phpBB3中导入用户时, 需要处理的有两张表, 一个是 topics, 一个是 posts.为了方便与原数据关联, 需要在这两个表上新增一个字段并建立唯一索引 ALTER TABLE ...

  2. phpBB3导入版面的Python脚本

    关联的数据表 在phpBB3中导入版面时, 需要处理的有两张表, 一个是 forums, 一个是 acl_groups. 如果是干净的论坛, 可以不保留安装时填入的默认分区和版面, 直接用以下语句初始 ...

  3. zabbix3.4用Python脚本Excel批量导入主机

    1.安装xlrd读取Excel文件 1.1. 下载setuptools-38.2.4.zip,上传至zabbix服务器解压安装,下载地址:https://pypi.python.org/package ...

  4. 普通用户在命令终端使用Python脚本连入校园网

    普通用户在命令终端使用Python脚本连入校园网 想要连入校园网的步骤: 浏览器输入对应的IP地址,输入账号密码连网: 下载对应软件,输入账号密码连网: 而面对没有界面的服务器,而你又没有root权限 ...

  5. ArcGIS使用Python脚本工具

    在Pyhton写的一些代码,用户交互不方便,用户体验比较差,不方便重用.在ArcGIS中可以将用写的Python代码导入到ToolBox中,这样用起来就比较方便了.这里用按要素裁剪栅格的Python来 ...

  6. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  7. 使用Python脚本强化LLDB调试器

    LLDB是Xcode自带的调试器,作为一个iOS应用开发程序员,平时我在开发应用时会使用LLDB来调试代码.在逆向应用时,也会用到LLDB来跟踪应用的执行过程. LLDB还内置了一个Python解析器 ...

  8. 利用pyinstaller将python脚本打包发布

    之前写了一个小工具,将excel配置表转换为json.xml.lua等配置文件.最近在学习egret,正好需要转换配置文件,刚好就用上了.然而当我想把工具拷到工作目录时,就发愁了.之前我为了方便扩展, ...

  9. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

随机推荐

  1. STL容器及泛型算法

    一.顺序容器 1.容器的选择 (1) 随机访问,选vector ,deque (2) 在中间插入或者删除元素,选list (3) 在头尾插入或删除元素 , 选deque 2.list的成员函数 (1) ...

  2. Ajax技术使用(一)

    Ajax技术使用 目录 AJAX介绍 XMLHttpRequest 请求和响应 onreadystatechange 事件 AJAX介绍 什么是 AJAX AJAX = 异步 JavaScript 和 ...

  3. [ 严重 ] my网SQL注入

    RANK  80 金币    100 数据包 POST maoyan.com/sendapp HTTP/1.1Host: xxx.maoyan.comUser-Agent: Mozilla/5.0 ( ...

  4. Python中list、字典、字符串的讲解

    python 的list讲解  计算机中的数组是从0开始的 list中的下标.角标.索引说的都是一个 数组都是从0开始的. stus=["刘",“王”,“张”] stus2=[] ...

  5. Typescript中抽象类与接口详细对比与应用场景介绍

    现如今,TS正在逐渐成为前端OO编程的不二之选,以下是我在学习过程中对抽象类和接口做的横向对比. 1. 抽象类当做父类,被继承.且抽象类的派生类的构造函数中必须调用super():接口可以当做“子类” ...

  6. SQL 自定义四舍五入

    --============================================== -- 自定义的四舍五入(四舍五入后的所有尾数遇进则进) -- by 小天使 2015-11-12 -- ...

  7. maven 构建spring boot + mysql 的基础项目

    一.maven 依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...

  8. QtQuick大坑笔记之Http的Get与Post操作(带cookie)

    前言 最近在为单位做一个简单的手机App,基于Qt技术栈的选择了QtQuick来开发.不得不说QtQucik开发的确舒服,很多东西都不用写就可以只用,UI定义起来也比较自由.但是本人想通过cookie ...

  9. BZOJ.4818.[SDOI2017]序列计数(DP 快速幂)

    BZOJ 洛谷 竟然水过了一道SDOI!(虽然就是很水...) 首先暴力DP,\(f[i][j][0/1]\)表示当前是第\(i\)个数,所有数的和模\(P\)为\(j\),有没有出现过质数的方案数. ...

  10. [CF536D]Tavas in Kansas

    [CF536D]Tavas in Kansas 题目大意: 一张\(n(n\le2000)\)个点,\(m(m\le10^5)\)条边的无向带权连通图(权值可以为负).A.B两人分别在\(s,t\)点 ...