无法将db字节的包解压缩到db()。select()函数中

时间:2015-12-14 19:25:10

标签: web2py

我没有解压缩字段列表,而是试图解包一个字段元组,并将结果传递给db()。select()函数,如下所示:

def get_record(self, record_id, fields):
    try:
        return self.db(self.db.t_group.id == record_id).select(*fields).first()
    except Exception as e:
        print e

def fun1(self, record_id):
    self.get_record(record_id, (self.db.t_group.f_expiration))

这样做会迅速吞噬所有系统的内存,或多或少地使系统停止运行。但是,如果我传递了一个列表而不是一个元组,那么,如下面的语句所示,该函数按预期工作:

def fun1(self, record_id):
    self.get_record(record_id, [self.db.t_group.f_expiration])

为什么将元组解压缩到db()。select()函数中会有问题?

1 个答案:

答案 0 :(得分:1)

(self.db.t_group.f_expiration)不是元组,只是等同于self.db.t_group.f_expiration

在Python中,元组是通过用逗号分隔项来定义的,而不是用带圆括号的周围项来定义的(括号并不总是需要的,只是可以在更大的上下文中定义元组表达式,就像任何其他表达式一样)。要创建单项元组,只需在项目后添加逗号(如果需要,将整个项目包装在括号中)。在这种情况下:

(self.db.t_group.f_expiration, )

请参阅https://wiki.python.org/moin/TupleSyntax