2017-12-16 14 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の気にいけません。最初の行はすべての行をフェッチします。 2番目の行は決して行を得ず、lenは常に0になるので、挿入は常に起こります。

+0

解決済み。ありがとうございました – dauhuong68

+0

私は "cur.fetchall()内の行を削除しました:print(row)"(1,2)の作成を許可したいのですが、(1,1)だけが再び追加することはできません。私は同じユーザー名と異なるパスを持つアカウントを意味しますが、同じアカウントはもう一度追加できません。私はcur.executeを書いています( "SELECT *からUSERNAME =?とパスワード=?"、(self.textEdit.toPlainText()、self.textEdit_2.toPlainText()))を書いていますが、それは動作しません – dauhuong68

+0

そうですね。あなたは? 「?」で。また、Alexがパラメータタイプについて投稿したこの回答をチェックしてください。 https://stackoverflow.com/a/902836/8652974 –

関連する問題