SQLite가 존재하지 않는 경우에만 테이블을 작성하십시오.


답변:


483

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

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

3
이것은 인덱스에도 적용됩니다.CREATE UNIQUE INDEX IF NOT EXISTS some_index ON some_table(some_column, another_column);
Michael Scheper

1
삽입물이 존재하지 않는 경우에만 삽입을 원한다면 어떻습니까? 내가 원하는 것은 매번 REPLACE 문을 지불하지 않고 파생 테이블이 존재하지 않으면 즉시 파생 테이블을 만드는 것입니다.
Britton Kerin

1
@BrittonKerin이므로 먼저 테이블이 존재하는지 여부를 확인해야합니다 (이것이 내가 생각하는 열쇠입니다 ... 나머지는 조건부 검사를 수행 한 후 코드를 실행 중입니다). 이 조건에 대한 답변에서 내 답변을 참조하십시오.
aaronlhe

1

이 아주 좋은 질문에 가치를 더하고 @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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.