파이썬에서 sqlite3로 update때 궁금한점이 있습니다.
조회수 1686회
1 def ComboNameChange(self, event):
2 ChangeName = self.combos1_2.GetValue()
3 for NameData in self.comboData2:
4 if NameData == self.combobind1_2:
5 self.cursor.execute('UPDATE CLINIC17 SET NAME1=?', (ChangeName, ))
6 self.conn.commit()
위에 예제 코드입니다. wxpython모듈로 프로그램 만드는중인데 한가지 궁금한점이 있어 질문드립니다.
1 콤보박스에서 값 선택후 백스페이스로 지운후 엔터를 누르면 작동
2self.combos1_2.GetValue()
콤보박스 선택 후 변경된 이름이(백스페이스 누른후 키보드로 입력하는값) ChangeName
변수에 저장 됩니다.
3 self.comboData2
데이터베이스로 저장된(듀플) 이름이 반복문을 이용하여 NameData
에 저장됩니다.
4 self.combobind1_2
콤보박스에 선택된 값이 NameData
이름과 같을 경우
5 변경된 ChangeName
이름(값)을 UPDATE CLINIC17 SET NAME1=?
컬럼에 변경인데...
여기서 궁금한점이 있습니다. 작동은 아주 잘되는데 UPDATE CLINIC17 SET NAME1=?
이부분에
NAME1=?
여기 컬럼이 테이블 생성할때 NAME1~20번까지 있습니다. 위에 코드는 NAME1번만 변경이 되는데 이걸 NAME1~20까지 작동하게 하려면 어떻게 해야할까요??
python sqlite3가이드보니 컬럼옆에 xxx(i).foramt(value) 이런식으로 사용하던데..len함수 써서
하면 될까요?? 아니면 counter 변수를 하나 만들고 for NameData in self.comboData2:
실행할대
1씩 값을 증가하면 변경될 name컬럼이랑 듀플번호랑 같아 지는데... ㅜㅜ 어렵네요
1 답변
-
0 TEXT="UPDATE CLINIC17 SET NAME1" 1 def ComboNameChange(self, event): 2 ChangeName = self.combos1_2.GetValue() 3 for NameData in self.comboData2: 4 if NameData == self.combobind1_2: for target in range(1,21): TEXT_tmp=TEXT.replace('NAME1','NAME'+str(target)) 5 self.cursor.execute(TEXT_tmp+'=?', (ChangeName, )) 6 self.conn.commit()
댓글 입력