I want to use Alan's (and others') idea to run a SQL file to create a table if that table does not exist. Alan suggested using executescript() to do this. I misunderstood Alan and thought that this would take a filename and execute it. Instead, it appears that I must pass to it a string which is a SQL script. So after lots of fooling around in the interpreter I arrived at:
py3: import sqlite3 py3: conn = sqlite3.connect(':memory:') py3: c = conn.cursor() py3: try: ... c.execute('select * from BloodPressureReadings') ... except sqlite3.OperationalError: ... with open('create_sqlite3_db.sql') as f: ... sql = f.read() ... c.executescript(sql) ... <sqlite3.Cursor object at 0x0000000001E54490> The file 'create_sqlite3_db.sql' contains: CREATE TABLE BloodPressureReadings ( ReadingID INTEGER PRIMARY KEY, Date TEXT, Time TEXT, SystolicBP INTEGER, DiastolicBP INTEGER, Comments TEXT); So at this point I am only creating an empty table. The above "works", but my "try" check is awful! What can I replace it with to just see if there is *any* table in the chosen database? In the code Peter supplied in the thread, "How is database creation normally handled?", he used in his function, "ensure_db(filename)": cursor.execute("create table if not exists addresses (name, email);") which is sweet, but I don't see how I can apply this idea if I insist on using a SQL file to create my table(s). BTW, in the docs at https://docs.python.org/3/library/sqlite3.html I found no mention of the actual exception I caught, "OperationalError". Should not this be in the docs? -- boB _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor