2017-12-16 2 views
0

def addmember를 작성하여 database.db에 구성원을 추가했습니다. 예를 들어 사용자 이름에 반복을 사용하지 않으려합니다. 데이터베이스에 구성원 (1,1)을 추가 할 때 이미 사용자 이름이 "1"인 사용자가 있기 때문에 구성원 (1,2)을 데이터베이스에 추가 할 수 없습니다. 하지만 내 코드는 여전히 그것을 허용합니다! 어떤 사람이 나를 도울 수 있습니까? self.textEdit.toPlainText(), self.textEdit_2.toPlainText()가 내은 QTextEdit 개체입니다 노드는 그것이비 반복 사용자 이름 데이터베이스 만들기

def addmember(self): 
     self.connection = sqlite3.connect("database.db") 
     cur = self.connection.cursor() 
     cur.execute("CREATE TABLE IF NOT EXISTS USERS(USERNAME TEXT ,PASSWORD TEXT)") 
     cur.execute("SELECT * FROM USERS WHERE USERNAME=?", (self.textEdit.toPlainText())) 
     for row in cur.fetchall(): 
      print(row) 
     if (len(cur.fetchall())==0): 

      cur.execute("INSERT INTO USERS VALUES(?,?)",(self.textEdit.toPlainText(), self.textEdit_2.toPlainText())) 
      self.connection.commit() 
      self.textEdit.clear() 
      self.textEdit_2.clear() 
      cur.close() 
     else: 
      self.textEdit.clear() 
      self.textEdit_2.clear() 
      cur.close() 
     self.connection.commit() 
     self.connection.close() 

답변

0

당신의 전화를 두 번 fetchall 마음니까. 첫 번째 행은 모든 행을 가져옵니다. 두 번째 행에는 아무런 행이 없으며 len은 항상 0이므로 삽입이 항상 발생합니다.

+0

해결되었습니다. 고맙습니다. – dauhuong68

+0

"cur.fetchall()의 행 : print (row)"이 삭제되었습니다. (1, 2)을 만들 수 있도록하려면 (1,1) 만 다시 추가 할 수 없습니까? 나는 동일한 사용자 이름과 다른 패스를 가진 계정이 허용되지만 동일한 계정은 다시 추가되지 않습니다. 나는 cur.execute ("셀렉트 *에서 사용자 이름 =? 및 패스워드 =?", (self.textEdit.toPlainText(), self.textEdit_2.toPlainText()))를 쓰지만 작동하지 않습니다. – dauhuong68

+0

맞아요. 당신은 동봉 할 수 있습니까? '?'에 . Alex가 매개 변수 유형에 대해 게시 한 답변도 확인하십시오. https://stackoverflow.com/a/902836/8652974 –