2015-05-06 155 views
0

我想从数据库中的会话表中检索用户。在我的单元测试我得到一个错误:比较元组与字符串

line 138, in test_session_user 
    self.assertEqual(nick_from_cookie, nick) 
AssertionError: ('Bobalooba',) != 'Bobalooba' 

我明白,这是因为当测试对因此字符串,不匹配的比较我的返回值,我的代码返回一个元组。

有没有办法让我使用元组进行比较,或者是他们更好的方式来查询我需要的结果。下面是一个使用藏汉作为我的功能表IM:

def session_user(db): 
    """try to 
    retrieve the user from the sessions table 
    return usernick or None if no valid session is present 
    """ 
    cursor = db.cursor() 
    sessionid = bottle.request.get_cookie(COOKIE_NAME) 
    usernick = None 
    if sessionid: 
     cursor.execute("SELECT usernick FROM sessions WHERE sessionid=?", (sessionid,)) 
     usernick = cursor.fetchone() 
    return usernick 

回答

3

使用

row = cursor.fetchone() 
if row: 
    usernick, = row 

注元组的拆包。

+0

当我尝试这方面,我得到一个错误“线66,在SESSION_USER usernick,= cursor.fetchone() 类型错误:‘NoneType’对象不是可迭代 ” –

+0

然后将查询的结果是空的。在解开元组之前先检查它。 –

+0

我该如何去做?抱歉,python绝对不是我的强项。我是新手。 –