与SQL和Python匹配的有效字符串

问题描述 投票:0回答:1

我想知道用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数据库进行字符串匹配的最佳方法是什么。我的数据库包含酒吧名称和邮政编码。我想检查是否有引用指向同一发布者的观察结果...

python psycopg2 psql string-matching
1个回答
0
投票

两个SELECT查询都在同一pub_tables表上。对于pub_tables的每一行,都将重复进行带有zip-match的第二个查询的内部循环。您可以通过对自己进行pub_tables的INNER JOIN直接在一个查询中获得zip相等性比较。

© www.soinside.com 2019 - 2024. All rights reserved.