[Tutor] How to test for the existence of a table in a sqlite3 db?
boB Stepp
robertvstepp at gmail.com
Sat Oct 14 03:11:44 EDT 2017
On Sat, Oct 14, 2017 at 1:43 AM, boB Stepp <robertvstepp at gmail.com> wrote:
> I am currently trying to make the following work:
>
> py3: tb_exists = c.execute('select name from sqlite_master where type="table"')
>
> so that I can embed this in an if statement. But it is not behaving
> quite like I hope yet. So I am still experimenting and Googling ...
I'm tired and not thinking clearly anymore, but I think I have
something to give me the basis of what I want to do. First, what
happens if the table does *not* exist:
py3: import sqlite3
py3: conn = sqlite3.connect(':memory:')
py3: c = conn.cursor()
py3: tb_exists = "select name from sqlite_master where type='table'
and name='test'"
py3: tb_ck = c.execute(tb_exists).fetchone()
py3: tb_ck
py3: print(tb_ck)
None
So I get "None" as a result if the target table has not been created
yet. But if I *do* create the table I want:
py3: with open('create_sqlite3_db.sql') as f:
... sql = f.read()
...
py3: c.executescript(sql)
<sqlite3.Cursor object at 0x00000000026B4490>
py3: tb_exists = "select name from sqlite_master where type='table'
and name='BloodPressureReadings'"
py3: tb_ck = c.execute(tb_exists).fetchone()
py3: print(tb_ck)
('BloodPressureReadings',)
So it is looking like I can use this technique to determine if I need
to create the BloodPressureReadings table or not. Am I on track here
or is there a better technique?
--
boB
More information about the Tutor
mailing list