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

oct*_*bus 46 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'}
Run Code Online (Sandbox Code Playgroud)

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

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

int(snapped_read['reading'])并将3018L改为3018.

我只是好奇为什么整数会以这种方式出现.

JAB*_*JAB 48

因为在Python 3之前的Python版本中,长整数文字用一个lL后缀表示.在Python 3中,ints和longs已合并为just 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

  • 附注:MySQLdb在Python 2.x上将所有整数类型转换为long类型 (7认同)

Kal*_*esh 13

L用于long数据类型.

例如,

age = 24 # int
bankBalance = 20000005L # long
Run Code Online (Sandbox Code Playgroud)

  • 您需要一个"长"来包含您的银行余额?难道你不应该在游泳池边喝柠檬水吗?你在做什么回答关于SO的问题?(+1) - 尽管您可能想将注释从`//`更改为`#`. (4认同)

Bor*_*jaX 7

因为它们不是完全整数,所以它们是"长"的.

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

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

>>> a=1
>>> b=long(1)
>>> a
1
>>> b
1L
>>> a==b
True
Run Code Online (Sandbox Code Playgroud)

关于此的其他stackoverflow问题:这里