2012-08-01 6 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'} 

はテーブルから一度読み込んだ結果をzip形式で圧縮MySQLデータベースのテーブルの列で構成されています。

は私が)(int型にこれらの値を渡すことで「L」を削除することができますので、その辞書は、変数の名前snapped_readにあったならば、私はこれを行うことができます:

int(snapped_read['reading'])3018L3018に変更します。

なぜ整数がこのように表示されるのか不思議です。

答えて

35

パイソン3前のPythonのバージョンでは、長整数リテラルはl又はLサフィックスで示したので。 Python 3では、intlongがちょうどintにマージされています。これは、あたかもlongに似ています。 Pythonのlongは(今のPython 3のintタイプの場合である。)無制限の精度でよりBigNumber型のもののようだった一方で、技術的には、Pythonは(2)のintは、Cのlongと同等であったことを

に注意してください。

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

+7

サイドノート:MySQLdbは、Python 2.xのすべての整数型をlong型に変換します。 –

+1

興味深いことに、しかし、 'BIGINT'だけがそれを必要とするように見えるので、私はそれがPythonインターフェースの点で一貫性のためだと推測しています。 http://dev.mysql.com/doc/refman/5.6/en/integer-types.html – JAB

+0

ええ、理由はわかりませんが、「TINYINT」列までも長い型に変換されました...詳細な調査が必要ですが、しかし、私はそれがPythonのデータベースインタフェースAPIのためだとも思っています。 –

10

Llongデータ型です。例えば

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

はちょうど私を打ち負かします! :) –

+4

あなたの銀行残高を保管するのに「長い」必要がありますか?あなたはプールでレモネードを飲んではいけませんか?それで、あなたは何の質問に答えていますか? (+1) - コメントを '//'から '#'に変更したいかもしれません。 – mgilson

+0

申し訳ありません@mgilson私はPHPの男です:) – Kalpesh