2011-12-31 2 views
0

SQLite 데이터베이스에 루프에 데이터를 삽입하기 위해 선언 기반 및 Python 2.6.7과 함께 SQLAlchemy를 사용하고 있습니다.Python은 SQLAlchemy를 사용하여 SQLite 데이터베이스에 루프 변수를 삽입합니다.

간단한 배경으로 루프에서 변수 집합을 만드는 사전 접근 방식을 구현했습니다.

overall_star_ratings = doc.findall("//div[@id='maincontent2']/div/table/tr[2]//td/img") 
count_stars = len(overall_star_ratings) 

을 빈 SQLite 데이터베이스에서 나는 "t1_star"변수를 가지고 ... : 내가 뭘하려고 다음과 같은 요소에 데이터를 1 ~ 12 개 웹 사이트에서 일부 데이터를 긁어하고있는 것입니다 "t12_star"를 선택하고 "overall_star_ratings"에있는 값 목록을 반복하고 해당 값을 페이지에 따라 달라지는 데이터베이스 변수에 할당하려고합니다. 나는 SQLAlchemy를 사용하고있다. (매우 비효율적 인 언어에서) 내가하고 싶은 것은 값을 할당하고 다음과 같이 DB에 삽입하는 것이다. (나는 '행' 명령은 데이터베이스 열 't1_star'등)에 * t1_star *의 값을 삽입 :이 작동하지만 매우 비효율적이다

if count==2: 
    row.t1_star = overall_star_ratings[1].get('alt') 
    row.t2_star = overall_star_ratings[2].get('alt')   
elif count==1: 
    row.t1_star = overall_star_ratings[1].get('alt') 

, 그래서 '나는이 변수를 생성에 "사전"접근 방식을 구현 스택 오버플로에 대한 "변수 변수"질문에 표시됩니다. 그래서, 여기에 내가 무엇을 시도했다입니다 : 이것은 사전뿐만 아니라 값에 대한 't1_star', 't2_star "키를 생성하기위한 작동

d = {} 
for x in range(1, count_stars+1): 
    count = x-1 
    d["t{0}_star".format(x)] = overall_star_ratings[count].get('alt') 

문제는 온다 나는에 데이터를 삽입 할 때. .

for key, value in d.items(): 
    row.key = value 

문제는이되지 않는 것입니다 : 위의 루프가 완료된 후 나는 또한 다음을 추가하려고했습니다

key = "t{0}_star".format(x) 
    value = d["t{0}_star".format(x)] 
    row.key = value 

: 데이터베이스 본인은 위의 루프에 다음과 같은 추가 시도 삽입하다 아무것도. 문제가 값 값이 아니고 스크립트의 일부인 부분에있는 것으로 보입니다. 그러나 그 점은 확실하지 않습니다. 내가 볼 수있는 모든 것에서 은 "비효율적 인"방법 (예 : t1_star 등)을 할 때와 같은 문자열이므로 이것이 작동하지 않는 이유를 모르겠습니다. .

의견을 보내 주시면 대단히 감사하겠습니다.

감사합니다,

그렉

답변

3

파이썬 속성 접근 그렇게 작동하지 않습니다. row.key은 변수 key에있는 값이 아닌 리터럴 이름이 "key" 인 속성을 조회합니다.

당신은 아마 setattr를 사용해야합니다 :

setattr(row, key, value) 
+0

이 마법처럼 일했다! 감사! –

관련 문제