यदि यह पहले से मौजूद नहीं है, तो SQLite में तालिका बनाएं


275

मैं 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);
माइकल स्काइपर

1
कैसे के बारे में अगर मैं तब भी आवेषण का एक गुच्छा करना चाहता हूँ अगर यह मौजूद नहीं था? मैं चाहता हूं कि अगर मैं हर बार REPLACE स्टेटमेंट के एक समूह के लिए भुगतान किए बिना, उड़ने पर एक व्युत्पन्न तालिका बनाता हूं, तो यह मौजूद नहीं है।
ब्रिटन केरीन

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.