2017-12-17 16 views
0

데이터베이스에서 단일 SQLite 선택 항목을 추가하려고합니다 (연결하지 않음). 그러나 값을 목록으로 반환하고 연결을 시도합니다. "total = users + values"행을보고 있습니다. 모의 재고 포트폴리오 거래를 관리하는 웹 플라스크 앱을 개발 중입니다. 도와주세요! 는 'users'테이블의 '현금'컬럼이 숫자이고 luochenhuan이 코멘트에서 알 수 있듯이 '포트폴리오'테이블의 '공유'와 '가격'열이 INTEGER와 숫자Python에서 SQLite 데이터베이스 선택을 사용하는 방법

users = db.execute("SELECT cash FROM users WHERE id = :id", id=session["user_id"]) 
portfolio = db.execute("SELECT * FROM portfolio WHERE id = :id", id=session["user_id"]) 

values = 0 
total = users 
if portfolio: 
    for each in portfolio: 
     values= values + (each.shares * each.price) 
     total = users + values 

#value = usd(total) 
value = users 
return render_template("index.html", stock=portfolio, user=users, value=value) 
+0

당신의'사용자'변수는'sqlite3.Cursor' 객체이고'total'도 마찬가지입니다. 'sqlite3.Cursor'와 'float'을 합산하려고하는데,'total = users + values'도 실행 가능하다고 생각하지 않습니다. – luochenhuan

답변

1

있으며, sqlite3.executesqlite3.Cursor 객체가 반환 따라서 userportfolio 변수는 실제로는 커서이며 값의 반복 가능한 모음이 아닙니다. 이러한 반복을 가능하게하려면 결과 목록을 얻기 위해 .fetchall() 메소드를 호출해야합니다.

이렇게하면 이러한 목록의 각 결과는 SQLite 데이터베이스의 행을 나타내는 튜플이되고 이름이 지정된 속성의 속성은 아닙니다. 따라서 관심있는 값을 얻으려면 색인을 사용하여 값에 액세스하거나 Collections.namedtuple 인스턴스에로드하여 명명 된 속성을 통해 값에 액세스해야합니다.

+0

실수를 분명히 해줘서 고맙습니다. 커서 객체는 대괄호 안에 JSON-esque 객체를 반환합니다.이 'users'테이블에서 값을 참조하는 쉬운 방법이 있습니다. [{ 'id': 1, 'username': 'truth', 'hash': 'PassW0rd '}] – tiff