1. 云栖社区>
  2. PHP教程>
  3. 正文

关于搭建wiki镜像和数据库的一些东西

作者:用户 来源:互联网 时间:2017-12-01 16:02:22

数据库镜像搭建wiki一些关于

关于搭建wiki镜像和数据库的一些东西 - 摘要: 本文讲的是关于搭建wiki镜像和数据库的一些东西, 1:搭建wiki镜像(1)Apache,Php5,Mysql不可少,然后下载mediawiki软件。(2)mediawiki直接解压到apache里面,然后进主页去创建数据库wikidb。里面有41个表。在导入数据之间,要先清除page,


1:搭建wiki镜像
(1)Apache,Php5,Mysql不可少,然后下载mediawiki软件。
(2)mediawiki直接解压到apache里面,然后进主页去创建数据库wikidb。里面有41个表。在导入数据之间,要先清除page,revision,text三个表。
delete from page;
delete from revision;
delete from text;
(3)http://dumps.wikimedia.org/backup-index.html在这里可以下载任何语言wiki的数据库xml文件。下载的文件类似于enwiki-20061130-pages-articles.xml.bz2(英文版的),wiki差不多每两个月更新一次数据。
(4)把文件导入数据库:
命令:
java -Xmx600M -server -jar mwdumper.jar --format=sql:1.5
enwiki-20061130-pages-articles.xml.bz2 | mysql -u wikiuser -p wikidb
这是linux下的,windows下的对应改一下路径,当然啦,需要mwdumper.jar包
可以在http://dumps.wikimedia.org/tools/ 下载
说明:1.这个xml压缩文件只有最新版本的文件。如果要所有的历史记录应该是类似这样的文件:
             enwiki-20061130-pages-meta-history.xml.bz2
           2.windows下的命令:
              java -jar d:mwdumper.jar --format=sql:1.5 d:enwiki-20061130-pages-meta-history.xml.bz2 | c:mysqlbinmysql.exe -u root(数据库登录者) -p wikidb(用mediawiki建立的后台数据库名字)
(5)现在,实际上wikidb里面只有三个表有内容,page,revision,text。对于只研究wiki文本已经足够了,本来想画个图简单说明一下这三个表的关系,可是在网上看到了一个关于41表的完整版,连接:png/8621bbc1-1ffa-3511-8023-acbe735ac39f.png
当时不知道有这图,分析了半天才搞明白这三个表的关系,总之就是revision表的rev_page对应page表的page_id,revision表的rev_id对应text表的old_id
好啦,现在wiki的镜像搭建好了,可以按自己的要求读取里面的数据啦。
我用的是python2.6
--------------------------------------------------------------------
下面是关于python处理数据库的内容:
需要装MySQLdb
MySQLdb版本: MySQL-python-1.2.2.win32-py2.6.exe
下载地址:http://home.netimperia.com/files/misc/MySQL-python-1.2.2.win32-py2.6.exe
参见:http://sourceforge.net/forum/forum.php?thread_id=2316047&forum_id=70460
常见问题:
1.ImportError: DLL load failed: 找不到指定的模块。
----------------------------------------------------------------------------------------------------
D:usrlocalPython26>python
Python 2.6 (r26:66721, Oct  2 2008, 11:35:03) [MSC v.1500 32 bit (Intel)] on win32
Type"help","copyright","credits"or"license"for more information.
>>> import MySQLdb
Traceback (most recent call last):
  File"", line 1, in
  File"D:usrlocalPython26Libsite-packagesMySQLdb__init__.py", line 19, in
    import _mysql
ImportError: DLL load failed: 找不到指定的模块。
----------------------------------------------------------------------------------------------------
解决方法:下载libmmd.dll和libguide40.dll两个dll文件并复制System32目录之下
参见:http://sourceforge.net/forum/message.php?msg_id=5613887
2.ImportError: DLL load failed: 找不到指定的模块。
----------------------------------------------------------------------------------------------------
D:usrlocalPython26>python
Python 2.6 (r26:66721, Oct  2 2008, 11:35:03) [MSC v.1500 32 bit (Intel)] on win32
Type"help","copyright","credits"or"license"for more information.
>>> import MySQLdb
D:usrlocalPython26libsite-packagesMySQLdb__init__.py:34: DeprecationWarning: the sets module is deprecated
  from sets import ImmutableSet
----------------------------------------------------------------------------------------------------
解决方法:
1) 在文件中"__init__", 注释掉:
from sets import ImmutableSet 
class DBAPISet(ImmutableSet): 
新增:
class DBAPISet(frozenset)
2) 在文件中"converters.py", 注释掉  from sets import BaseSet, Set 这一句话。
3) 在文件中"converters.py", 修改"Set"成为"set"( 只有两个地方需要修改):
大概 line 48: return Set([ i for i in s.split(',') if i ]) 》》 return set([ i for i in s.split(',') if i ])
大概 line 128: Set: Set2Str, 》》 set: Set2Str
参见:http://sourceforge.net/forum/message.php?msg_id=5808948
------------------------------------------------------------------------------------------
好啦好啦,然后就是运用MySQLdb包连数据库wikidb,然后用sql语句自己想要的数据,我把读取的数据用python包装成xml。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库 , 镜像 , 搭建 , wiki , 一些 , 关于 ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备