2017-10-16 4 views
1

pyodbc를 통해 SQL 데이터베이스에서 데이터를 선택하면이 유형의 결과로 끝나는 문제가 있습니다.pyodbc가 하나의 항목 만 반환하는 쿼리에 대해 간단한 (스칼라) 값을 반환 했습니까?

[(55.0는)]

내가 순수한 번호를 원하는 (NO "["또는 "("내가 나중에 새로운 물건을 계산 한 후 다른 테이블에 삽입 할 수 있습니다. I 이 예에서 단일 행을 포함하는 (행의 목록을 가지고 있기 때문에 당신은 [(55.0,)]

rows = conn.execute("SELECT price from PG").fetchall() 
print(rows[:1]) 
+0

그러나 여기에서 모든 레코드를 가져오고 첫 번째 레코드 만 인쇄하고 있습니까? –

답변

1

:. 그것은 사소한 확신하지만, 난 그냥 방법을 알아낼 수 없었던 아래는 내가 사용하고 코드입니다), 각 행은 하나의 요소를 갖는 튜플입니다 (을 선택 했으므로). 당신은 아마 당신의 쿼리를 다시 생각해야한다, 하나가 이상한 것 같습니다 선택하는 모든 행을 가져 오는, 그러나

singlerow = rows[0] 
price, = singlerow 

할 수 있습니다. 미래의 독자

1

참고 : pyodbc 커서 객체가 fetchval 방법이 있습니다

fetchval() 간이 메소드는, 결과가있는 경우 첫 번째 행의 첫 번째 열을 반환 그렇지 않으면 None을 반환하지 않습니다.

는 (그것은 .NET ExecuteScalar() 방법과 유사하다.)

그래서 대신

row_count = crsr.execute("SELECT COUNT(*) FROM TableName").fetchone()[0] 

같은 일을 뭔가 우리가

row_count = crsr.execute("SELECT COUNT(*) FROM TableName").fetchval() 

그것은이 할 수있는 None을 반환하는 추가 된 이점 (예외)를 반환합니다.