为什么数据库行元组中的整数后缀为'L'?

时间:2012-08-01 17:46:49

标签: python mysql

我的问题是为什么MySQL行的整数值后缀为'L'?以下是详细信息:

以下字典 - 为了便于显示而人为地格式化 -

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

由一个MySQL数据库表的列压缩,其中包含从表中读取一次的结果。

我可以通过将这些值传递给int()来删除'L',所以如果该字典位于名为snapped_read的变量中,我可以这样做:

int(snapped_read['reading'])3018L会更改为3018

我很好奇为什么整数会以这种方式出现。

3 个答案:

答案 0 :(得分:48)

因为在Python 3之前的Python版本中,长整数文字用lL后缀表示。在Python 3中,intlong已合并为int,其功能与long的功能非常相似。

请注意,从技术上讲,Python(2)的int相当于C的long,而Python的long更像是BigNumber类型的东西。无限精度(现在是Python 3的int类型的情况。)

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

答案 1 :(得分:13)

L适用于long数据类型。

例如,

age = 24 # int
bankBalance = 20000005L # long

答案 2 :(得分:7)

因为它们不是完全整数,所以它们是“长的”。

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

他们通常不会提供太多麻烦,但

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

关于此问题的其他stackoverflow问题:here