এসকিউএলাইটে টেবিল তৈরি করুন যদি এটি ইতিমধ্যে বিদ্যমান না থাকে


275

আমি কেবলমাত্র এসকিউএলাইট ডাটাবেসে একটি টেবিল তৈরি করতে চাই যদি ইতিমধ্যে উপস্থিত না থাকে। এই কাজ করতে কোন উপায় আছে কি? আমি টেবিলটি উপস্থিত থাকলে তা ফেলে দিতে চাই না, এটি না থাকলে কেবল এটি তৈরি করুন।


উত্তর:


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
আমি যদি চাই না তবে এটির অস্তিত্ব না থাকলে কেবল একগুচ্ছ সন্নিবেশ করান? আমি যা চাই তা হ'ল ফ্লাইয়ের উপর একটি উত্সযুক্ত টেবিল তৈরি করা যদি আমি খুঁজে পাই এটির অস্তিত্ব নেই, প্রতিবার রিপ্লেস স্টেটমেন্টের একগুচ্ছ জন্য অর্থ প্রদান না করে।
ব্রিটনের ক্যারিন

1
@ ব্রিটনকেরিন, সুতরাং প্রথমে আপনার টেবিলের উপস্থিতি আছে কিনা তা যাচাই করতে হবে (আমি মনে করি এটিই মূল কী ... বাকী শর্তসাপেক্ষে চেক করার পরে আপনার কোডটি চালাচ্ছে)। এই শর্তের উত্তরগুলিতে আমার উত্তরটি দেখুন।
অ্যারোনলে

1

আমি এই খুব ভাল প্রশ্নটির মূল্য এবং সংযোজন করতে যাচ্ছি এবং @ ডেভিড ওলেভারের দুর্দান্ত উত্তরের নীচে একটি মন্তব্যে @ ব্রিটেনকেরিনের প্রশ্নটি তৈরি করতে চাই। এখানে ভাগ করে নিতে চাই কারণ আমার @ ব্রিটেন কেরিনের মতো একই চ্যালেঞ্জ ছিল এবং আমি কিছু কাজ পেয়েছি (যেমন টেবিলের অস্তিত্ব না থাকলে কেবল কোডের একটি অংশ চালাতে চাই)।

        # 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.