Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do integers in database row tuple have an 'L' suffix?

Tags:

python

mysql

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.

like image 595
octopusgrabbus Avatar asked Aug 01 '12 17:08

octopusgrabbus


1 Answers

Because in versions of Python before Python 3, long integer literals were indicated with an l or L suffix. In Python 3, ints and longs have been merged into just int, which functions pretty much like long used to.

Do note that, technically, Python( 2)'s int was equivalent to C's long, while Python's long was more like a BigNumber-type thing with unlimited precision (which is now the case for Python 3's int type.)

http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex

like image 63
JAB Avatar answered Oct 12 '22 17:10

JAB