Python sqlite3.OperationalError: no such table:

j'essaie de stocker des données sur les élèves d'une école. J'ai fait quelques tables auparavant, comme une pour les mots de passe et les enseignants que je vais plus tard rassembler dans un programme.

j'ai à peu près copié la fonction create table À partir de l'un de ceux-ci et changé les valeurs à l'information de L'élève. Il fonctionne très bien sur les autres programmes, mais je reçois:

sqlite3.OperationalError: no such table: PupilPremiumTable

lorsque j'essaie d'ajouter un élève à la table, il se produit sur la ligne:

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

je regarde dans le dossier et il y a un fichier appelé PupilPremiumTable.db et la table a déjà été créée avant, donc je ne sais pas pourquoi ça ne marche pas.

voici un peu de mon code, si vous avez besoin de plus, n'hésitez pas à me le dire, comme je l'ai dit, ça a marché avant, donc je n'ai aucune idée de pourquoi ça ne marche pas ou même ce qui ne marche pas:

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)
9
demandé sur Martijn Pieters 2015-01-24 16:44:46

1 réponses

vous supposez que le répertoire de travail courant est le même que le répertoire dans lequel votre script vit. Ce n'est pas une hypothèse que vous pouvez faire. Votre script est de l'ouverture d'un base de données dans un répertoire différent, celui qui est vide.

Utiliser un chemin absolu pour votre fichier de base de données. Vous pouvez vous baser sur le chemin absolu du script:

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:

vous pouvez vérifier ce qu'est le répertoire de travail actuel avec os.getcwd() si vous voulez comprendre à la place, vous ouvrez le nouveau fichier de base de données; vous voulez probablement nettoyer le fichier supplémentaire que vous y avez créé.

26
répondu Martijn Pieters 2015-01-24 14:08:06