파이썬에서 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 답변

  • 좋아요

    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 07:42
    • 감사합니다 정말 많은 도움이 되었습니다. 다크매터 2017.10.14 13:10

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)