2010-03-01 15 views
6

मुझे एक SQL क्वेरी में पायथन में निष्पादित करने की आवश्यकता है जो sqlite3 में एक नया कॉलम जोड़ता है।वैकल्पिक तालिका स्क्लाइट: तालिका को बदलने से पहले एक कॉलम मौजूद है या नहीं?

समस्या यह है कि कभी-कभी यह पहले से मौजूद है। तो क्वेरी को निष्पादित करने से पहले मुझे यह जांचने की आवश्यकता है कि कॉलम पहले से मौजूद है या नहीं।

यदि ऐसा होता है, तो मैं क्वेरी निष्पादित नहीं करूंगा।

क्या ऐसा करने के लिए स्क्लाइट में कोई तरीका है? या क्या मुझे इसे पायथन कोड में एक कोशिश-पकड़ ब्लॉक के माध्यम से बनाना है?

बहुत पहले से धन्यवाद!

उत्तर

12

आप निम्नलिखित बयान के माध्यम से एक मेज के लिए कॉलम की एक सूची प्राप्त कर सकते हैं: pragma आदेशों पर

PRAGMA table_info('table_name'); 

अधिक जानकारी the sqlite web site

+0

+1 एक स्वच्छ और सरल उत्तर के लिए +1 –

+0

प्रश्न 'पायथन' टैग किया गया है लेकिन यह आपको Python में यह कैसे नहीं दिखाता है – user5359531

11

पर availabel हैं IMO इस

conn = sqlite3.connect(':memory:') 
c = conn.cursor() 
try: 
    c.execute('ALTER TABLE mytable ADD COLUMN newcolumn;') 
except: 
    pass # handle the error 
c.close() 

है विशेष केस क्वेरी बनाने से बेहतर विकल्प।

आप उपरोक्त कोड को एडकॉलम (कर्सर, टेबल, कॉलम) फ़ंक्शन में लपेट सकते हैं ताकि आप इसका पुन: उपयोग कर सकें,
प्लस यह कोड को और अधिक पठनीय बना देगा।

संबंधित मुद्दे