暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

postgresql使用python实现汉字转拼音函数

原创 仙人掌 2022-10-26
1711

postgresql使用python实现汉字转拼音函数

在oracle迁移到pg过程时,遇到一个汉字转拼音的函数,pg本身没有相关函数;
能查询到的解决方案:
一是建立词库表,通过词库去查询并返回
另一个就是根据汉字编码去写一堆case when(迁移前原oracle上的该函数也是这样实现的)
建立词库表还是一个不错的方案,可以参考德哥发过的一篇文章,第二种实现方式就有点繁琐了

汉字转拼音也算是比较常用的功能,肯定还有其他解决办法,于是想到用python能不能实现,而且pg是支持用python来创建函数的
百度一下,果然有pypinyin这个库可以实现,环境配置好之后,只需要简单的两行代码就可以输出想要的结果
原函数部分截图如下

image20221026163308712.png

运行环境

1.安装python3和pypinyin库
2.数据库安装扩展plpython3u

注意事项

python3和pypinyin库的安装步骤网上有很多,请自行百度
扩展plpython3u的安装,如果pg源码安装的时候,安装环境下有python3,并且使用了参数 --with-python,那么扩展的创建方式跟其他扩展一样
有一种情况是pg源码安装时环境是Python2,就需要先安装python3,再重新编译plpython扩展

具体方法参考https://www.modb.pro/db/397948

效果展示

image20221026163704295.png

汉字转全拼
create or replace function pinyin_quanpin(word varchar) returns varchar as $$ from pypinyin import lazy_pinyin,Style p=lazy_pinyin(word) s=''.join(p[0:]) return s $$ language plpython3u;
汉字转拼音首字母
create or replace function pinyin_shouzimu(word varchar) returns varchar as $$ from pypinyin import lazy_pinyin,Style p=lazy_pinyin(word,style=Style.FIRST_LETTER) s=''.join(p[0:]) return s $$ language plpython3u;

本文只是一个使用python创建函数的小例子,如果你熟悉python,通过这种方式也可以解决一些其他问题。

参考文档

https://www.modb.pro/db/397948

https://pypi.org/project/pypinyin/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论