2012-08-01 24 views
36

Sorunun nedeni, bir MySQL satırının tamsayı değerlerinin bir 'L' son ekine sahip olmasıdır? yapay ekran kolaylığı için buraya biçimlendirilmiş - -Veritabanı satırı satırlarındaki tamsayıların neden bir 'L' son eki var?

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

tablodan bir kez okuma sonucu ile sıkıştırılmış bir MySQL veritabanı tablo sütunlarının oluşur

aşağıdaki sözlüğü: İşte detaylar.

I) (int bu değerleri geçirerek 'L' kaldırabilir, böylece Sözlük adlı bir değişken snapped_read olsaydı, bunu yapabilir miydim:

int(snapped_read['reading']) ve 3018L3018 olarak değişir.

Ben tamsayılar bu şekilde göstermek neden olarak merak ediyorum.

cevap

35

Python 3 önce Python sürümlerinde, uzun tamsayı sabitleri bir l veya L soneki ile belirtilmiştir için. Python 3, int ler ve long ler hemen hemen long gibi fonksiyonlar için kullanılır, hangi sadece int haline getirildi.

, teknik olarak, Python unutmayın yapın Python en long daha sınırsız hassasiyetle bir BigNumber tipi şey gibi iken (2) 'nin int, C'ler long eşdeğer oldu (şimdi Python 3'ün int türü için geçerlidir.) onlar tamsayılar tam Çünkü değiliz

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

+7

Yan nota: MySQLdb, Python 2.x üzerinde TÜM tamsayı türlerini uzun yazmaya dönüştürür. –

+1

Bilmek ilginç. Sadece "BIGINT" ın buna ihtiyacı var gibi görünüyor, bu yüzden Python arayüzü açısından tutarlılık için tahmin ediyorum. Daha detaylı araştırılması İhtiyaçları ... http://dev.mysql.com/doc/refman/5.6/en/integer-types.html – JAB

+0

Evet, neden bilmiyorum, ama buna rağmen 'TINYINT' sütunlar uzun türüne dönüştürülür var ama bunun Python'un veritabanı arayüzü API'sı olduğunu düşünüyorum. –

10

Llong veri türü için. Örneğin

,

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

Beni döven! :) –

+4

Banka bakiyenizi içerecek bir 'long''a ihtiyacınız var mı? Limonatayı bir havuzda yudumlamaman gerekmiyor mu? SO ile ilgili soruları cevaplamak için ne yapıyorsunuz? (+1) - yorumlarınızı '//' - '#' arasında değiştirmek isteyebilirsiniz. – mgilson

+0

Maalesef @mgilson Ben Python PHP adam :) – Kalpesh