2017-09-25 1 views
1

나는 select 문을 실행하기 위해 MySQLdb를 통해 mysql에 액세스하는 파이썬 코드를 가지고있다. 나는 그 배열로 그 출력을 수집 cursor.fetchall()를 사용하지만, 문제는 지금과 같은 각 출력의 끝에 L을 인쇄입니다 :cursor.fetchall()에서 결과 인쇄

sql = "SELECT data1, data2 FROM table1, table2 ;" 
cursor.execute(sql) 
dataarray = cursor.fetchall() 
print dataarray 

>>> ((75379L, 45708L), ...) 

하지만 내 테이블에, 아니 L의 단지 숫자가있다. L을 사용하지 않고 데이터를 가져 와서 인쇄하는 방법은 무엇입니까? 내 None 값을 Non으로 변경하기 때문에 문자열에서 [:-1]을 사용하지 않는 것이 좋습니다.

답변

1

Llong 정수 유형을 나타냅니다. Python 2에서는 너무 큰 값을 자동으로 사용하여 일반 정수로 표시하지 않습니다.

MySQLdb은 항상 long의 복귀가 나타납니다 : MySQL의의 정수 열이 파이썬 정수로 완벽하게 번역하는 동안

, 부호없는 정수 오버 플로우 수를, 그래서이 값 대신 파이썬 긴 정수로 변환 이다.

이러한 값으로 str()을 호출하면 후행 'L'이 생략됩니다.

+0

그래서 이러한 값으로 테이블을 업데이트하면 올바르게 업데이트됩니까? 75379L에서와 같이 정수 데이터 형식의 열에 오류없이 입력됩니까? –

+0

예, 'int'와 'long'은 서로 바꿔 쓸 수 있습니다. BTW, 개별 값을 인쇄하면 뒤에 'L'이 표시되지 않습니다. 당신이 컨테이너를 인쇄하고 있기 때문에 그것을보고 있습니다. –

+0

문서가 혼란 스럽습니다. 파이썬 int를 오버플로 할 수 있습니까? 나는 그 구별이 오래 전에 사라 졌다고 생각했다. – roganjosh