lancedb 表名 编解码 与 转译 python

在本地储存 lancedb 数据库,表名需要处理。

如果是有效表名,则直接使用,否则编码为base64字符串 (特化的base64字符串),特化的字符串以 b64u8 开头。

python 复制代码
from lancedb.util import validate_table_name

# ----------------------------------------------------------------------------------------------------------------

_enc_prefix = '_b64u8_'
_encode_translation = bytes.maketrans(b'+/=', b'-_.')
_decode_translation = bytes.maketrans(b'-_.', b'+/=')


# 转译 原始字符串 到 编码后字符串。如果 validate_table_name 失败则转译
def _encode_name(name: str):
    try:
        validate_table_name(name)
        return name
    except ValueError:
        pass
    name = _enc_prefix + base64.b64encode(name.encode('u8')).translate(_encode_translation).decode('u8')
    validate_table_name(name)
    return name

# 转译 编码后字符串 到 原始字符串。根据前缀,决定是否转译
def _decode_name(name: str):
    if name.startswith(_enc_prefix):
        name = name.removeprefix(_enc_prefix)
        name = base64.b64decode(name.encode('u8').translate(_decode_translation)).decode('u8')
    return name


def encode_names(names: str|list[str]):
    if isinstance(names, str):
        return _encode_name(names)
    else:
        assert isinstance(names, (tuple, list))
        return [_encode_name(n) for n in names]

def decode_names(names: str|list[str]):
    if isinstance(names, str):
        return _decode_name(names)
    else:
        assert isinstance(names, (tuple, list))
        return [_decode_name(n) for n in names]


def dt_to_lance_ts_str(t: dt.datetime):
    # 转换为lancedb可用的时间字符串
    t_str = t.strftime("%Y-%m-%d %H:%M:%S.%f")
    t_str2 = f"to_timestamp('{t_str}')"
    return t_str2

# ----------------------------------------------------------------------------------------------------------------
相关推荐
2601_962078193 小时前
Python中calendar.weekday用法
python·编程技巧·calendar·日期处理·weekday
2601_962218614 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
2601_966949654 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin4 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
2601_962885724 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
滕州市燕猫虎计算机科技工作室个体工商户4 小时前
Java锁
java·开发语言
李高钢4 小时前
Python FastAPI 框架入门:从零搭建你的第一个高性能 API 服务
数据库·python·fastapi
多加点辣也没关系4 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2335 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21035 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文