我在python上使用sqlite3 librairy与.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有人已经面临这个问题了吗?我分享整个请求,以防万一,我是一个完全的初学者。
谢谢,
埃利亚斯
发布于 2020-12-28 20:08:01
我认为你运气不好,因为你可能是从评论中收集到的。模块sqlite3通常提供最新版本的sqlite。
但是Python库没有提供默认关闭的可选sqlite3特性。这包括soundex函数。我不能建议您尝试在打开选项的情况下构建自己版本的Python标准库模块。这类事情最好留给Python实现者。
作为另一种选择,您可以尝试levenshtein模块:pip install python-Levenshtein或metaphone模块:pip install Metaphone。
要使用这两种方法,都需要从数据库中获取比实际需要的更多的记录,例如where realisateur like "T%",然后放弃Python代码中的不匹配,而不是where子句中的不匹配。
这并不像听起来那么糟糕,而且可能有好处。Soundex是在20世纪早期发展起来的,因此它的目的是让人们能够快速地手工计算它。它存在着重大缺陷,在随后的100年中为改进这一制度所作的许多努力就表明了这一点。其流行的主要原因是因为它是由许多SQL实现提供的,而不是因为它特别好。
发布于 2021-07-21 19:30:40
将数据加载到dataframe中,然后使用fuzzywuzzy查找类似的字符串单词。
https://stackoverflow.com/questions/65478806
复制相似问题