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


从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