2012-12-11 49 views
0

我正在研究一个能够通过将问题导出到数据库中进行测验的程序。我在网上查了一下,它说在python中导入或导出到数据库的最简单的方法之一就是使用SQLite3插件,所以我试了一下。这是我第一次使用SQLite3插件,已经使用了SQLite3的插件与Python,和我不断收到一个语法错误的self.connection.commit()中:第一次SQLite3用户python 3,打印语法错误

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

如果我是通过之前添加#把它变成一个评论,它会告诉我在这个打印是一个语法错误:

print ("Would you like to make a test? Or would you like to take a test?") 

也许它的我的缩进,或者我做错了什么?

import squlite3 
class QuestionStorage(object): 
    def _init_(self, path): 
     self.connection = sqlite3.connect(path) 
     self.cursor = self.connection.cursor() 

def Close(self): 
    self.cursor.close() 
    self.connection.close() 

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.exeute(query) 
    self.connection.commit() 
    #self.cursor.close() 

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

def GetQuestion(self, index = None): 
    self.cursor.execute("""SELECT * FROM questions WEHRE id=?""", (index,)) 



print ("Would you like to make a test? Or would you like to take a test?") 
testTaker = input ("To create a test, type Create. To take a test, type Take.") 

if testTaker == "Create": 
    testName = input ("Give your test a name.") 
    testQ = int(input ("How many questions will be on this test? (Numeric value only.)")) 
    testType = input ("Will this test be multiple choice? (y/n)") 
    if testType == "N" or "n": 
     counter = 1 
     qs = QuestionStorage("questions.db") 
     qs.CreateDb() 
     counter = 1 
     while counter >= testQ: 
      Answer = [] 
      Question = input ("What is your question?") 
      Answer[1] = input ("What is the first answer?") 
      Answer[2] = input ("What is the second answer?") 
      Answer[3] = input ("What is the third answer?") 
      Answer[4] = input ("What is your last answer?") 
      correctAnswer = input("Which answer is the correct answer? (1, 2, 3, or 4?)") 
      Answer[5] = Answer[correctAnswer] 

     qs.AddQuestion(Question, Answer[1] , Answer[2], Answer[3], Answer[4], Answer[5]) 
     counter +=1 


else: 

然后之后,我会有读取数据库的代码进行测试。

如果有人能帮我解决这个问题,那会很棒。现在我只是试图让它达到我可以在调试中运行它的地步。

回答

5

你忘了这里关闭括号:

self.cursor.execute("""INSERT INTO questions 
         VALUES (?, ?, ?, ?, ?, ?)""", (None, Question, Answer1, Answer2, Answer3, Answer4, CorrectAnswer) 

换个收盘)在该行的末尾。