My question is why do a MySQL row’s integer values have an ‘L’ suffix? Here are the details:
The following dictionary — artificially formatted here for ease of display —
{'estimated': '',
'suffix': '',
'typeofread': 'g',
'acct_no': 901001000L,
'counter': 0,
'time_billed': datetime.datetime(2012, 5, 1, 9, 5, 33),
'date_read': datetime.datetime(2012, 3, 13, 23, 19, 45),
'reading': 3018L,
'meter_num': '26174200'}
is comprised of a MySQL database table’s columns zipped with the result of reading once from the table.
I can remove the ‘L’ by passing these values into int(), so if that dictionary were in a variable named snapped_read, I could do this:
int(snapped_read['reading']) and 3018L would change to 3018.
I’m just curious as to why integers show up this way.
Because in versions of Python before Python 3, long integer literals were indicated with an
lorLsuffix. In Python 3,ints andlongs have been merged into justint, which functions pretty much likelongused to.Do note that, technically, Python( 2)’s
intwas equivalent to C’slong, while Python’slongwas more like aBigNumber-type thing with unlimited precision (which is now the case for Python 3’sinttype.)http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex