仅当表不存在时才在SQLite中创建表

我想在SQLite数据库中创建一个表,如果不存在的话。有什么办法可以做到吗?如果表存在,我不想删除它,如果不存在,只创建它。

254181 次浏览

http://www.sqlite.org/lang_createtable.html:

CREATE TABLE IF NOT EXISTS some_table (id INTEGER PRIMARY KEY AUTOINCREMENT, ...);

我将尝试为这个非常好的问题增加价值,并在@David Wolever的精彩回答下的一条评论中以@BrittonKerin的问题为基础。想在这里分享,因为我有同样的挑战@BrittonKerin,我得到了一些工作(即只想运行一段代码,如果表不存在)。

        # for completeness lets do the routine thing of connections and cursors
conn = sqlite3.connect(db_file, timeout=1000)


cursor = conn.cursor()


# get the count of tables with the name
tablename = 'KABOOM'
cursor.execute("SELECT count(name) FROM sqlite_master WHERE type='table' AND name=? ", (tablename, ))


print(cursor.fetchone()) # this SHOULD BE in a tuple containing count(name) integer.


# check if the db has existing table named KABOOM
# if the count is 1, then table exists
if cursor.fetchone()[0] ==1 :
print('Table exists. I can do my custom stuff here now.... ')
pass
else:
# then table doesn't exist.
custRET = myCustFunc(foo,bar) # replace this with your custom logic