0

我正在尝试在我的 Django(带有 Python 2.7.4 的 Django 1.5)应用程序中进行 Facebook 登录,当我尝试将INSERT登录用户的位置名称输入我的 MySQL 数据库时,该表会保存一个带括号的字符串和一个逗号。

例如,如果位置的名称(我访问序列化一个 JSON 对象并键入facebookMember['location']['name'])是“Turdera”,当我查看我的数据库时,存储的值是"(u'Turdera',)"。它只在我调用Model.save()函数时发生,所以它不会发生当我将位置名称直接放在创建函数上时(Model.objects.get_or_create())

这是 JSON:

{u'username': u'nombre.apellido', u'first_name': u'Nombre',
 u'last_name': u'Apellido', u'verified': True,
 u'name': u'Nombre Apellido', u'locale': u'en_US',
 u'hometown': {u'id': u'104026979634226', u'name': u'Turdera'},
 u'work': [{u'position': {u'id': u'416940894990201',
                          u'name': u'Software Developer'},
            u'start_date': u'0000-00',
            u'employer': {u'id': u'2176879549', u'name': u'Empresa'}}],
 u'email': u'email@hotmail.com',
 u'updated_time': u'2013-08-09T17:30:17+0000', u'birthday': u'05/08/1987',
 u'link': u'https://www.facebook.com/nombre.apellido',
 **u'location': {u'id': u'104026979634226', u'name': u'Turdera'}**,
 u'gender': u'male', u'timezone': -3,
 u'education': [{u'school': {u'id': u'18143905522',
                             u'name': u'ITMaster Professional Training'},
                 u'type': u'College'},
                {u'school': {u'id': u'1089762591',
                             u'name': u'Pontifical Catholic University'},
                 u'type': u'College'}], u'id': u'655273058'}

这是保存功能的代码:

        obj, created = Member.objects.get_or_create(id=long(facebookMember['id']))

        if (obj.first_login == None):
            obj.first_login=datetime.now()

        obj.first_name=facebookMember['first_name']
        obj.last_name=facebookMember['last_name']
        obj.email=facebookMember['email']
        obj.locale=facebookMember['locale']
        obj.access_token=facebookMember['access_token']
        obj.location=(facebookMember['location']['name'] if 'location' in facebookMember else None),
        obj.gender = Utils().getInitialFromGender(facebookMember['gender'])
        obj.date_of_birth = Utils().getDateAsYYYYMMDD(facebookMember['birthday']) 
        obj.last_login=datetime.now()
        obj.save()

我可以删除“u”,但不能删除括号和逗号。

4

1 回答 1

1

为什么行尾有逗号?这让 python 认为你有一个元组,而不是一个字符串:

>>> t = "s" if True else "b"
>>> print t
s
>>> t = ("s" if True else "b")
>>> print t
s
>>> t = ("s" if True else "b"),
('s',)

所以试试:

obj.location=facebookMember['location'].get('name', None)
于 2013-08-15T18:40:12.953 回答