EZR Database SDK
公司内部数据库元数据 SDK,提供同步、只读的 Python 接口:
- 多环境基础库配置,实例间连接隔离。
- 查询品牌的业务库连接节点和分表配置。
- 根据整数或字符串 ID 计算物理表名,兼容 C# BKDR Hash。
Python 3.10+,包名 ezr-database-sdk,导入名 ezr_database_sdk。
安装与开发
python -m venv .venv
.venv/bin/python -m pip install -e .
.venv/bin/python -m unittest discover -s tests -v
其他项目在自己的虚拟环境内安装本项目路径或已发布的 wheel:
python -m pip install /path/to/ezr-database-sdk
快速使用
复制 database.example.yaml 为私有的 database.yaml,设置选中环境的配置变量:
from ezr_database_sdk import (
EzrDatabaseSDK, physical_table_name_by_int, physical_table_name_by_hash,
)
with EzrDatabaseSDK.from_yaml("database.yaml", env="qcloud") as sdk:
rules = sdk.get_table_shards(brand_id=6812, database="crm")
nodes = sdk.get_connection_strings(brand_id=6812, database="crm")
# 默认选择第一个主节点;多主节点也允许,不要打印返回的连接串。
connection_string = sdk.get_connection_string(brand_id=6812, database="crm")
# 计算已配置分表规则的表名:
# table = sdk.get_physical_table_name_by_int(6812, "crm", "实际逻辑表名", 123)
# hashed = sdk.get_physical_table_name_by_hash(6812, "crm", "实际逻辑表名", "123")
# 不连接数据库的纯计算接口:
assert physical_table_name_by_int("vip", 123, 16) == "vip12"
assert physical_table_name_by_hash("vip", "123", 16) == "vip3"
两种算法通过方法名显式选择,并严格检查参数类型,不自动转换;整数方法传入字符串、Hash 方法传入整数均会报错。旧的自动分派接口仅保留兼容并标记弃用,迁移说明见使用文档。
连接串含敏感凭据,禁止打印或写入日志。建议每个线程独立创建 SDK 实例,并使用上下文管理器关闭。
详细配置、返回字段、业务库代号、算法兼容及错误处理见 使用文档。
发布
.venv/bin/python -m pip install -e '.[release]'
.venv/bin/python upload.py --dry-run # 预演,不修改、不上传
.venv/bin/python upload.py --build-only # 测试、构建、校验,不改版本、不上传
# 正式发布(先配置 Twine 凭据;会递增版本并实际上传):
# .venv/bin/python upload.py
版本递增规则与 kxy/framework 一致,补丁号超过 19 时进位。仓库、凭据和故障恢复见 发布文档。
本项目从 testdata 工具项目独立迁出,不依赖其脚本、私有配置或数据库凭据。
Metadata
Release files for ezr-database-sdk 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ezr_database_sdk-0.1.3.tar.gz | 26.4 kB | Without provenance | Details for ezr_database_sdk-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ezr_database_sdk-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for ezr_database_sdk-0.1.3-py3-none-any.whl |
Total release size: 35.2 kB
Release files / ezr_database_sdk-0.1.3.tar.gz
| Download URL | ezr_database_sdk-0.1.3.tar.gz |
|---|---|
| Size | 26.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
447aec518c6b1b406e7e3c0559b5360c4478e03029801f12dc2e2198e0ae0bb1
|
|
BLAKE2b-256 checksum How to use checksums |
e6a2bcfa9587d414bb398e53f284286b3ef12ae4a98a3d834711857f6429c944
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Release files / ezr_database_sdk-0.1.3-py3-none-any.whl
| Download URL | ezr_database_sdk-0.1.3-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
63e71740f1e396157211cfa43d0e82fdeaee42459613303e8caaec6bd3df36f1
|
|
BLAKE2b-256 checksum How to use checksums |
d85e922522445097fdec8ee0c1e94bbacde828331f73d8d80663b2423232acad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.12
|
Security for ezr-database-sdk 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.