我想知道用Python和PSQL数据库进行字符串匹配的最佳方法是什么。我的数据库包含酒吧名称和邮政编码。我想检查是否有引用指向同一酒吧的观察结果,但其拼写错误。
[从概念上讲,我正在考虑遍历所有名称,并使用strsim对于同一邮政编码中的每一行,获取字符串相似性度量。如果该指标高于阈值,则将其插入存储匹配候选对象的另一个SQL表中。
我认为我效率低下。在“伪代码”中,具有pub_table,候选人列表和使用JaroWinkler函数,我的意思是做类似的事情:
from similarity.jarowinkler import JaroWinkler jarowinkler = JaroWinkler() cursor = conn.cursor() cur.execute("SELECT name, zip from pub_table") rows = cur.fetchall() for r in rows: cur.execute("SELECT name FROM pub_tables WHERE zip = %s", (r[1],)) search = cur.fetchall() for pub in search: if jarowinkler.similarity(r[0], pub[0]) > threshold: insertion = ("INSERT INTO candidates_table (name1, name2, zip) VALUES (%s, %s, %s)") cur.execute(insertion, (r[0], pub[0], zip)) cursor.close () conn.commit () conn.close ()
很抱歉,如果不清楚(这里是新手)。使用PSQL和Python进行字符串匹配的任何指导将受到高度赞赏。谢谢。
我想知道用Python和PSQL数据库进行字符串匹配的最佳方法是什么。我的数据库包含酒吧名称和邮政编码。我想检查是否有引用指向同一发布者的观察结果...
两个SELECT查询都在同一pub_tables
表上。对于pub_tables
的每一行,都将重复进行带有zip-match的第二个查询的内部循环。您可以通过对自己进行pub_tables
的INNER JOIN直接在一个查询中获得zip相等性比较。