postgresql使用python实现汉字转拼音函数
在oracle迁移到pg过程时,遇到一个汉字转拼音的函数,pg本身没有相关函数;
能查询到的解决方案:
一是建立词库表,通过词库去查询并返回
另一个就是根据汉字编码去写一堆case when(迁移前原oracle上的该函数也是这样实现的)
建立词库表还是一个不错的方案,可以参考德哥发过的一篇文章,第二种实现方式就有点繁琐了
汉字转拼音也算是比较常用的功能,肯定还有其他解决办法,于是想到用python能不能实现,而且pg是支持用python来创建函数的
百度一下,果然有pypinyin这个库可以实现,环境配置好之后,只需要简单的两行代码就可以输出想要的结果
原函数部分截图如下

运行环境
1.安装python3和pypinyin库
2.数据库安装扩展plpython3u
注意事项
python3和pypinyin库的安装步骤网上有很多,请自行百度
扩展plpython3u的安装,如果pg源码安装的时候,安装环境下有python3,并且使用了参数 --with-python,那么扩展的创建方式跟其他扩展一样
有一种情况是pg源码安装时环境是Python2,就需要先安装python3,再重新编译plpython扩展
具体方法参考https://www.modb.pro/db/397948
效果展示

汉字转全拼
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




