tutorial example python mysql

python - example - ¿Por qué los enteros en la fila de la base de datos tuple tienen un sufijo ''L''?



python mysql select (3)

Debido a que no son exactamente enteros, son ''largos''.

http://docs.python.org/library/stdtypes.html#typesnumeric

Por lo general, no ofrecen demasiados problemas, aunque

>>> a=1 >>> b=long(1) >>> a 1 >>> b 1L >>> a==b True

Otra pregunta de stackoverflow sobre esto: here

Mi pregunta es ¿por qué los valores enteros de una fila MySQL tienen un sufijo ''L''? Aquí están los detalles:

El siguiente diccionario - formateado artificialmente aquí para facilitar la visualización -

{''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''}

se compone de columnas de la tabla de una base de datos MySQL comprimidas con el resultado de leer una vez de la tabla.

Puedo eliminar la ''L'' pasando estos valores a int (), así que si ese diccionario estuviera en una variable llamada snapped_read, podría hacer esto:

int(snapped_read[''reading'']) y 3018L cambiarían a 3018 .

Solo tengo curiosidad sobre por qué los enteros aparecen de esta manera.


Porque en las versiones de Python anteriores a Python 3, los literales enteros largos se indicaban con un sufijo l o L En Python 3, int s y long s se han fusionado en solo int , que funciona más o menos como long mucho long .

Tenga en cuenta que, técnicamente, el int Python (2) fue equivalente a C''s long , mientras que Python''s long se parecía más a un tipo BigNumber con precisión ilimitada (que ahora es el caso para el tipo int Python 3).

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


L es para el tipo de datos long .

Por ejemplo,

age = 24 # int bankBalance = 20000005L # long