파이썬에서 sqlite3로 update때 궁금한점이 있습니다.


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컬럼이랑 듀플번호랑 같아 지는데... ㅜㅜ 어렵네요


조회수 89


1 답변


좋아요
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()
  • 2017년 10월 14일에 작성됨

  • 스마트폰으로 대충 하다 보니 좀 이상한데, 적당히 고쳐서 쓰시면 되겠습니다.    광자   2017.10.14 07:42     
  • 감사합니다 정말 많은 도움이 되었습니다.    다크매터   2017.10.14 13:10     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close