Select fails when cookie tried to get a numeric value

Ned Batchelder ned at nedbatchelder.com
Sat Oct 5 12:08:22 EDT 2013


On 10/5/13 11:52 AM, Νίκος Αλεξόπουλος wrote:
> Στις 5/10/2013 6:12 μμ, ο/η Ned Batchelder έγραψε:
>> On 10/5/13 10:40 AM, Νίκος Αλεξόπουλος wrote:
>>> Στις 5/10/2013 4:53 μμ, ο/η Ned Batchelder έγραψε:
>>>
>>>>  From reading the bottom-most frame, you can see that the problem is
>>>> that "val" is an http.cookies.Morsel object.  This means you probably
>>>> tried to use a cookie object as data in your SQL query, and MySQL
>>>> doesn't know what to do with that object.  You'll have to use a more
>>>> primitive piece of data in your query.
>>>
>>> # initialize cookie
>>> cookie = cookies.SimpleCookie( os.environ.get('HTTP_COOKIE') )
>>> cookie.load( cookie )
>>> cookieID = cookie.get('ID')
>>>
>>> # if browser cookie does not exist, set it
>>> if not cookieID:
>>>     cookie['ID'] = random.randrange(0, 10000)
>>>     cookie['ID']['path'] = '/'
>>>     cookie['ID']['expires'] = 60*60*24*365        #this cookie will
>>> expire in a month
>>>     cookieID = cookie.get('ID')
>>>     print( cookie )
>>>
>>>
>>> In the above code i try to retrive the cookie form the visitor's
>>> browser and if it does nto exist i create one.
>>>
>>>
>>>
>>> For some reason i think CookieID nevers gets inserted itnot the
>>> database that's why mysql's select statemnt fails.
>>>
>>> When i print CookieID i was under the impression i would see a random
>>> number like '5369' but instead it display the follwong.
>>>
>>> Set-Cookie: ID="Set-Cookie: ID=5369"
>>>
>>> The mysql filed CookieID is of datatype's int(5) so it cannto store
>>> this value.
>>>
>>> If iam correct and thi is trully the problem then how can i just get
>>> the random number part out the whole string?
>>>
>>> Do you see something wrong?
>>> Why cookie['ID'] retuned this string back and not just the number?
>>>
>>>
>>
>> Thanks for being patient.  Where you have this:
>>
>>      cookieID = cookie.get('ID')
>>
>> you actually want this:
>>
>>      cookieID = cookie.get('ID').value
>>
>> --Ned.
>
>
> [Sat Oct 05 15:51:02 2013] [error] [client 108.162.229.114]   File 
> "/home/nikos/public_html/cgi-bin/metrites.py", line 84, in <module>
> [Sat Oct 05 15:51:02 2013] [error] [client 108.162.229.114] cookieID = 
> cookie.get('ID').value
> [Sat Oct 05 15:51:02 2013] [error] [client 108.162.229.114] 
> AttributeError: 'NoneType' object has no attribute 'value'
>

Nikos: you know enough to understand what is going on here.

This list will not serve you well if you take every error message and 
paste it into an email without trying to get to the bottom of it 
yourself.  At the very least, a Google search on, "AttributeError: 
'NoneType' object has no attribute 'value'" will find you some answers.

I've said it before, I'll say it again:  slow down.

--Ned.



More information about the Python-list mailing list