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

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:\mysql\bin\mysql.exe -u root(数据库登录者) -p wikidb(用mediawiki建立的后台数据库名字)


(5)现在,实际上wikidb里面只有三个表有内容,page,revision,text。对于只研究wiki文本已经足够了,本来想画个图简单说明一下这三个表的关系,可是在网上看到了一个关于41表的完整版,连接:http://dl.javaeye.com/upload/attachment/80112/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:\usr\local\Python26>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 "<stdin>", line 1, in <module>
  File "D:\usr\local\Python26\Lib\site-packages\MySQLdb\__init__.py", line 19, in <module>

    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:\usr\local\Python26>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:\usr\local\Python26\lib\site-packages\MySQLdb\__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。

你可能感兴趣的:(sql,PHP,mysql,xml,python)