2012-08-01 16 views
36

我的问题是为什么一个MySQL行的整数值有一个'L'后缀?下面是详细信息:为什么数据库行元组中的整数具有'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

我只是好奇为什么整数显示这种方式。

回答

35
由于

在Python 3之前的Python版本,长整型文字进行指示用lL后缀。在Python 3中,int s和long s已合并为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

+7

备注:MySQLdb将所有整数类型转换为Python 2.x中的长类型 – 2012-08-01 18:09:37

+1

有趣的知道。看起来只有'BIGINT'需要,所以我猜这是为了Python界面的一致性。 http://dev.mysql.com/doc/refman/5.6/en/integer-types.html – JAB 2012-08-01 18:10:53

+0

是的,不知道为什么,但即使'TINYINT'列已转换为长类...需要进一步调查,但我也认为这是由于Python的数据库接口API。 – 2012-08-01 18:15:20

10

L用于数据类型long

例如,

age = 24 # int 
bankBalance = 20000005L # long 
+1

只是打我! :) – 2012-08-01 17:51:35

+4

你需要一个'长'来容纳你的银行余额?你不应该在游泳池边啜饮柠檬水吗?你在做什么回答问题? (+1) - 尽管您可能希望将注释从'//'改为'#'。 – mgilson 2012-08-01 17:53:12

+0

对不起@mgilson我是一个PHP家伙:) – Kalpesh 2012-08-01 17:58:50

相关问题