Glottolog语言树作为SQLite数据库
项目描述
此工具将languoids/tree目录中的内容从Glottolog 主仓库加载到规范化的SQLite数据库中。
该目录下的每个文件都包含一个Glottolog languoid的定义。将这些内容加载到关系数据库中可以执行一些高级一致性检查(例如示例)以及在一般情况下执行查询,以便以紧凑和高效的方式(例如,无需反复遍历目录树)检查languoid树关系。
请参阅pyglottolog,以获取更通用的官方Python API,用于在没有强制初始加载步骤的情况下与仓库一起工作(也提供了对参考文献的编程访问以及方便的命令行界面)。
数据库可以导出为包含每个数据库表的CSV文件的ZIP文件,或者通过提供的SQL查询写入单个非规范化CSV文件,每行一个语言。
由于sqlite是最广泛使用的数据库,因此数据库文件本身(例如treedb.sqlite3)可以从大多数编程环境直接查询。它也可以使用诸如DBeaver之类的图形界面或通过sqlite3 cli进行检查。
Python用户还可以使用提供的SQLAlchemy 模型来构建查询或使用SQLAlchemy核心或ORM(作为手写SQL查询的更可维护的替代品)来编程构建额外的抽象。
链接
快速入门
安装treedb(及其依赖项)
$ pip install treedb
克隆Glottolog master仓库
$ git clone https://github.com/glottolog/glottolog.git
注意:treedb默认情况下期望在./glottolog/下找到它(即当前目录下),使用treedb.set_root()将其指向不同的路径。
将./glottolog/languoids/tree/**/md.ini加载到内存中的sqlite3数据库中。将非规范化示例查询写入treedb.query.csv
$ python -c "import treedb; treedb.load(); treedb.write_csv()"
从Python使用
启动Python shell
$ python
导入包
>>> import treedb
使用treedb.iterlanguoids()遍历语言作为(<路径>,dict)对
>>> next(treedb.iterlanguoids())
(('abin1243',), {'id': 'abin1243', 'parent_id': None, 'level': 'language', ...
注意:这是一个低级接口,不需要加载。
将数据库加载到treedb.sqlite3(并设置默认engine)
>>> treedb.load('treedb.sqlite3')
...
<treedb._proxies.SqliteEngineProxy filename='treedb.sqlite3' ...>
运行一致性检查
>>> treedb.check()
...
True
导出为包含每个数据库表的CSV文件的ZIP文件
>>> treedb.csv_zipfile()
...Path('treedb.zip')
执行示例查询并将其写入每行一个语言的CSV文件
>>> treedb.write_csv()
...Path('treedb.query.csv')
重建数据库(例如更新后)
>>> treedb.load(rebuild=True)
...
<treedb._proxies.SqliteEngineProxy filename='treedb.sqlite3' ...>
使用sqlalchemy核心执行简单查询并将其写入CSV文件
>>> import sqlalchemy as sa
>>> treedb.write_csv(sa.select(treedb.Languoid), filename='languoids.csv')
...Path('languoids.csv')
通过sqlalchemy核心从languoid表获取一行(按Glottocode顺序)
>>> next(treedb.iterrows(sa.select(treedb.Languoid)))
('3adt1234', '3Ad-Tekles', 'dialect', 'nort3292', None, None, None, None)
通过sqlalchemy.orm获取一个Languoid模型实例(按Glottocode顺序)
>>> session = treedb.Session()
>>> session.query(treedb.Languoid).first()
<Languoid id='3adt1234' level='dialect' name='3Ad-Tekles'>
>>> session.close()
另请参阅
pyglottolog – 访问https://github.com/glottolog/glottolog的官方Python API
许可证
本工具采用MIT许可证分发。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。