mwsql是一组用于处理MediaWiki SQL转储数据的实用程序
项目描述
概述
mwsql为处理维基媒体SQL转储文件提供实用程序。它支持Python 3.9及更高版本。
mwsql抽象了处理SQL转储文件的复杂性。每个维基媒体SQL转储文件包含一个数据库表。使用mwsql最常见的情况是将该表转换为更用户友好的Python Dump 类实例。这使得您可以以属性的形式访问表的元数据(数据库名称、字段名称、数据类型等),以及内容——表行——作为一个生成器,这使您能够处理比内存大的数据集,因为Python生成器具有固有的懒加载/延迟执行。
mwsql还提供了一个将SQL转储文件转换为CSV的方法。您可以在使用示例中找到有关如何使用mwsql的更多信息。
安装
您可以使用pip安装mwsql
$ pip install mwsql
基本用法
>>> from mwsql import Dump
>>> dump = Dump.from_file('simplewiki-latest-change_tag_def.sql.gz')
>>> dump.head(5)
['ctd_id', 'ctd_name', 'ctd_user_defined', 'ctd_count']
['1', 'mw-replace', '0', '10453']
['2', 'visualeditor', '0', '309141']
['3', 'mw-undo', '0', '59767']
['4', 'mw-rollback', '0', '71585']
['5', 'mobile edit', '0', '234682']
>>> dump.dtypes
{'ctd_id': int, 'ctd_name': str, 'ctd_user_defined': int, 'ctd_count': int}
>>> rows = dump.rows(convert_dtypes=True)
>>> next(rows)
[1, 'mw-replace', 0, 10453]
已知问题
编码错误
维基媒体SQL数据包使用utf-8编码。不幸的是,一些字段可能包含无法识别的字符,在尝试解析数据包文件时会导致编码错误。如果在读取文件时发生这种情况,建议尝试使用不同的编码再次进行尝试。《span class="docutils literal">latin-1dump.encoding
解析错误
一些维基媒体SQL数据包包含字符串类型的字段,有时无法正确解析,导致字段被分成几个部分。这种情况更可能发生在解析包含来自维基媒体共享的文件名或包含具有许多查询参数的外部链接的数据包时。如果您正在解析其他数据包,不太可能遇到此问题。
在大多数情况下,此问题会影响解析的行中的相对非常小的比例。例如,维基媒体共享的《span class="docutils literal">pagepage links
此问题通常是由解析器错误地将字符串内的单个引号(或撇号,因为它们是相同的)视为标记该字符串结束的单个引号引起的。目前没有已知的解决方案,除了手动删除包含比预期更多字段的行,或者如果它们相对较少,则手动合并拆分的字段。
《span class="docutils literal">mwsql
项目信息
《span class="docutils literal">mwsqlGPLv3下发布。您可以在《a href="https://mwsql.readthedocs.io/en/latest/" rel="nofollow">Read the Docs`找到完整的文档。如果遇到错误,可以在我们的《a href="https://github.com/blancadesal/mwsql/issues" rel="nofollow">问题跟踪器中提交。您对如何使《span class="docutils literal">mwsql开始`的指南。
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪一个,请了解有关《a href="https://packaging.pythonlang.cn/tutorials/installing-packages/" title="外部链接" target="_blank" rel="noopener">安装包`的更多信息。