1

エラーが発生し続けます:

Traceback (most recent call last):
  File "C:\Users\Shepard\Desktop\Final Program\TestMaker.py", line 53, in <module>
    qs.AddQuestion(None, Question, Answer[1] , Answer[2], Answer[3], Answer[4], Answer[5])
TypeError: AddQuestion() takes 7 positional arguments but 8 were given

理解するのに十分簡単なようです。すべてのクエリステートメントを調べて、7つの位置引数を数えました。毎回。IDを含みます。この黒魔術とは何ですか?私はとても迷っています、それはコミカルでさえありません。

sqlite3クエリを生成するすべてのコードは次のとおりです。

def CreateDb(self):
    query = """CREATE TABLE Questions
             (id INTEGER PRIMARY KEY, Question TEXT, Answer1 TEXT, Answer2 TEXT, Answer3 TEXT, Answer4 TEXT, CorrectAnswer TEXT)"""
    self.cursor.execute(query)
    self.connection.commit()

def AddQuestion(self, Question, Answer1, Answer2, Answer3, Answer4, CorrectAnswer):
    self.cursor.execute("""INSERT INTO questions
                            VALUES (?, ?, ?, ?, ?, ?, ?, ?)""", [None, Question, Answer1, Answer2, Answer3, Answer4, CorrectAnswer])
    self.connection.commit()

if __name__ == "__main__":
    qs = QuestionStorage(testName + ".db")
    qs.CreateDb()    
    qs.AddQuestion(None, Question, Answer[1] , Answer[2], Answer[3], Answer[4], Answer[5])

私は今とても迷っています:S

4

2 に答える 2

4

AddQuestionはオブジェクト(qsあなたの場合はオブジェクト)のバインドされたメソッドであり、バインドされていない関数ではありません。つまり、これを呼び出すと、qs明示的に渡す引数の前に、最初の位置引数として自動的に渡されます。そのため、メソッドは通常self、最初の引数として記述されます。

変更する必要があります

qs.AddQuestion(None, Question, Answer[1] , Answer[2], Answer[3], Answer[4], Answer[5])

qs.AddQuestion(Question, Answer[1] , Answer[2], Answer[3], Answer[4], Answer[5])
于 2012-12-12T18:22:54.440 に答える
2

これは必要ありませんNone(AFAICT):

qs.AddQuestion(None, Question, Answer[1] , Answer[2], Answer[3], Answer[4], Answer[5])

また、クエリの後半で問題が発生します.AddQuestion-プレースホルダーについては、以下で8を数えます...

VALUES (?, ?, ?, ?, ?, ?, ?, ?)

パラメータは7...だから、何をしようとしているのかわからない!

于 2012-12-12T18:27:47.617 に答える