317

我只想在 SQLite 数据库中创建一个不存在的表。有没有办法做到这一点?如果表存在,我不想删除它,只有在它不存在时才创建它。

4

2 回答 2

572

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

CREATE TABLE IF NOT EXISTS some_table (id INTEGER PRIMARY KEY AUTOINCREMENT, ...);
于 2010-11-04T15:06:04.617 回答
4

我将尝试为这个非常好的问题增加价值,并在@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
于 2020-05-31T08:47:21.630 回答