2015-01-24 2 views
7

학교에서 학생에 대한 데이터를 저장하려고합니다. 필자는 하나의 프로그램에서 암호와 교사를위한 몇 가지 테이블을 만들었습니다.Python sqlite3.OperationalError : 해당 테이블 없음 :

필자는이 중 하나에서 테이블 만들기 기능을 복사하고 학생 정보에 대한 값을 변경했습니다. 그것은 다른 프로그램에서 잘 작동하지만 난 점점 계속 :

cursor.execute("select MAX(RecordID) from PupilPremiumTable") 

내가 폴더에보고가 :

sqlite3.OperationalError: no such table: PupilPremiumTable 

나는 테이블에 학생을 추가하려고,이 라인에서 발생 PupilPremiumTable.db이라는 파일이며 이전에 테이블이 생성되었으므로 작동하지 않는 이유를 알 수 없습니다.

: 당신이 더 필요 그렇게 말해 주시기 만약 내가 그렇게 나는 그것이 작동하지 않거나 심지어 무엇을 작동하지 않는 이유 단서가 없다 전에 근무 말했듯이 여기

는, 내 코드의 일부입니다
with sqlite3.connect("PupilPremiumTable.db") as db: 
    cursor = db.cursor() 
    cursor.execute("select MAX(RecordID) from PupilPremiumTable") 
    Value = cursor.fetchone() 
    Value = str('.'.join(str(x) for x in Value)) 
    if Value == "None": 
     Value = int(0) 
    else: 
     Value = int('.'.join(str(x) for x in Value)) 
    if Value == 'None,': 
     Value = 0 
    TeacherID = Value + 1 
    print("This RecordID is: ",RecordID) 
+0

'PupilPremiumTable' 테이블을 만들었나요? –

+0

예. 이전에 테이블이 이미 생성되었습니다. 분명하지 않은 경우 미안합니다. 이 python 파일과 같은 폴더에 있습니다. – Ben

+0

'PupilPremiumTable.db'라는 파일이 있다면'PupilPremiumTable'이라는 테이블이 있다는 것을 의미하지 않습니다. –

답변

20

현재 작업 디렉토리가 스크립트가있는 디렉토리와 같다고 가정합니다. 사용자가 할 수있는 가정은 아닙니다. 스크립트가 데이터베이스를 다른 디렉토리 (비어있는 디렉토리)에 여는 중입니다.

데이터베이스 파일의 절대 경로를 사용하십시오.

import os.path 

BASE_DIR = os.path.dirname(os.path.abspath(__file__)) 
db_path = os.path.join(BASE_DIR, "PupilPremiumTable.db") 
with sqlite3.connect(db_path) as db: 

당신은 당신이 새 데이터베이스 파일을 여는 경우 대신 파악하려는 경우 현재 작업 디렉토리가 os.getcwd()으로 무엇인지 확인할 수있다 : 당신은 당신의 스크립트의 절대 경로에 기초 할 수 거기서 만든 추가 파일을 정리하고 싶을 것입니다.

관련 문제