Database SQLAlchemy models for UNIHAN. Part of the cihai project. Powered by unihan-etl. See also: libUnihan.
By default, unihan-db creates a SQLite database in an XDG data directory. You can specify a custom database destination by passing a database url into get_session.
Example usage¶
#!/usr/bin/env python """Example for bootstrapping UNIHAN DB and print out a row.""" import pprint from sqlalchemy.sql.expression import func from unihan_db import bootstrap from unihan_db.tables import Unhn session = bootstrap.get_session() bootstrap.bootstrap_unihan(session) random_row_query = session.query(Unhn).order_by(func.random()).limit(1) assert random_row_query is not None random_row = random_row_query.first() pprint.pprint(bootstrap.to_dict(random_row)) pprint.pprint(random_row.to_dict()) # type:ignore
Run:
$ ./examples/01_bootstrap.py
Output:
{'char': '鎷', 'kCantonese': [{'char_id': '鎷', 'definition': 'maa5', 'id': 24035}], 'kDefinition': [], 'kHanYu': [{'char_id': '鎷', 'id': 24014, 'locations': [{'character': 5, 'generic_indice_id': 24014, 'generic_reading_id': None, 'id': 42170, 'page': 4237, 'virtual': 0, 'volume': 6}], 'type': 'kHanYu'}], 'kHanyuPinyin': [{'char_id': '鎷', 'id': 18090, 'locations': [{'character': 5, 'generic_indice_id': None, 'generic_reading_id': 18090, 'id': 42169, 'page': 4237, 'virtual': 0, 'volume': 6}], 'readings': [{'generic_reading_id': 18090, 'id': 26695, 'reading': 'mǎ'}], 'type': 'kHanyuPinyin'}], 'kMandarin': [{'char_id': '鎷', 'hans': 'mǎ', 'hant': 'mǎ', 'id': 23486}], 'ucn': 'U+93B7'}
Developing¶
$ git clone https://github.com/cihai/unihan-etl.git
Bootstrap your environment and learn more about contributing. We use the same conventions / tools across all cihai projects: pytest, sphinx, mypy, ruff, tmuxp, and file watcher helpers (e.g. entr(1)).
Python versions¶
0.8.0:
Last Python 3.7 release
Last SQLAlchemy 1.3 release