python上没有soundex

2024-06-16 13:29:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python上的sqlite3库与.db文件交互。 根据这项请求:

SELECT * FROM LesFilms F JOIN LesRealisateurs R ON (F.film_id=R.film_id) WHERE realisateur="Tim Burtyn" or soundex("Tim Burtyn")=soundex(R.realisateur) or realisateur like"T%m Burtyn" or realisateur like"Tim B%rtyn" or realisateur like"Tim Burt%n";

我得到了这个错误:

sqlite3.OperationalError: no such function: soundex

有人已经面临这个问题了吗?我分享整个请求,以防万一,我完全是个初学者

谢谢,

埃利亚斯


Tags: or文件fromiddbselectsqlite3like
2条回答

将数据加载到数据框中,然后使用fuzzywuzzy查找类似的字符串

我认为你运气不好,正如你可能从评论中得到的那样。Python标准库模块sqlite3通常提供sqlite的最新版本

  • 在Python3.9中,从2020年6月开始是3.32.3
  • 在Python3.8中,从2020年1月起为3.31.1
  • 在Python3.7和Python2.7.17中,从2019年4月起为3.28.0

但是Pythonsqlite3库不提供默认关闭的可选sqlite特性。这包括soundex函数。我不建议您在打开该选项的情况下尝试构建自己版本的Python标准库模块。这类事情最好留给Python实现者去做

或者,您可以尝试^{}模块:pip install python-Levenshtein^{}模块:pip install Metaphone

要使用这两种方法之一,您需要从数据库中获取比实际需要更多的记录,例如where realisateur like "T%",然后丢弃Python代码中的不匹配项,而不是where子句中的不匹配项

这并不像听起来那么糟糕,而且可能有好处。Soundex是在20世纪初开发的,因此它旨在让人们能够用手快速计算。正如在随后的100年中多次尝试改进它所表明的那样,它存在着重大缺陷。它流行的主要原因是因为它由许多SQL实现提供,而不是因为它特别好

相关问题 更多 >