Python sqlite3.OperationalError: no such table:
Question: I am trying to store data about pupils at a school. I've done a few tables
before, such as one for passwords and Teachers which I will later bring
together in one program.

I have pretty much copied the create table function from one of these and
changed the values to for the Pupil's information. It works fine on the other
programs but I keep getting:

    
    
    sqlite3.OperationalError: no such table: PupilPremiumTable
    

when I try to add a pupil to the table, it occurs on the line:

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

I look in the folder and there is a file called `PupilPremiumTable.db` and the
table has already been created before, so I don't know why it isn't working.

Here is some of my code, if you need more feel free to tell me so, as I said
it worked before so I have no clue why it isn't working or even what isn't
working:

    
    
    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)
    


Answer: You are assuming that the current working directory is the same as the
directory your script lives in. It is not an assumption you can make. Your
script is opening a _new_ database in a different directory, one that is
empty.

Use an absolute path for your database file. You can base it on the absolute
path of your 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:
    

You can verify what the current working directory is with
[`os.getcwd()`](https://docs.python.org/2/library/os.html#os.getcwd) if you
want to figure out where instead you are opening the new database file; you
probably want to clean up the extra file you created there.

