处理ID和数据库行的异构列表的pythonic方法是什么

2024-10-05 14:24:26 发布

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

我的情况是,我正在编写一个函数,允许用户从数据库中删除记录。为了提高效率,函数本身必须能够获取参数列表以进行批量删除。此外,为了简单起见,列表可以包含id(可以是stringsints行对象(它们被美化了dicts

如果您很好奇,那么允许完整行的原因是存在检查行数据的安全检查,以确保允许用户删除有问题的行。允许传入行可以减少对数据库的访问。你知道吗

目前,我以以下方式使用经常受到批评的isinstance函数:

def deleteRows(rowsToDelete):
    ids = set()
    rows = []
    for r in rowsToDelete:
        if isistance(r, basestring) or isinstance(r, int):
            ids.add(r)
        else:
            rows.append(r)
    # Some logic that SELECTS based on the data in ids and appends the
    # result into rows...
    # ... then security ...
    # ... then DELETE

我可以理解为什么这是危险的(如果有一个类型可以强制为一个不是intbasestring的id怎么办?)但是,我无法找到一个更干净的解决方案,该解决方案不以某种方式涉及isinstance,也不依赖于与实际代码相关或不相关的异常。你知道吗

问题是,在python中最有效的方法是什么?或者,对调用者的娇惯仅仅是一种灾难的预兆,也就是说,我应该要求参数要么是一个强制执行int的类型列表,要么是一个行列表?你知道吗


Tags: the函数用户inid数据库ids列表