3

我正在尝试在我的加入条件中利用 levenshtein 距离。

由于 sqlalchemy 不提供 func 模块中的实现,我将方法 stringdist.rdlevenshtein_norm 设置为 func.rdlevenshtein_norm 并在我的 sqlalchemy 连接中使用它,如下所示。

import stringdist
import sqlalchemy as sa

sa.func.rdlevenshtein_norm = stringdist.rdlevenshtein_norm

on_cond = [func.rdlevenshtein_norm(rel_a[str_col_a].column, rel_b[str_col_b].column) < 0.2]

sa.join(rel_a.table, rel_b.table, sa.and_(*on_cond),
                         isouter=outer, full=full)

但是该函数stringdist.rdlevenshtein_norm需要 2 个字符串作为输入,因此不能很好地与 sqlalchemy 一起比较 2 个连接列中的所有值。

所以我得到的 on_cond 错误是TypeError('argument 1 must be str, not Column',)

我在这里做错了什么?如何让 sqlalchemy 在执行连接操作时使用此功能?

4

0 回答 0