2010-05-18 7 views
5

sqlite3 के क्लाइंट सीएलआई में, ऐसा करने के लिए ".import फ़ाइल TABLE_name" है।पायथन sqlite3 मॉड्यूल में डेटा फ़ाइलों (जैसे .csv) आयात करने का कोई अन्य तरीका? [एक करके एक डालें]

लेकिन, मैं वर्तमान में अपने सर्वर पर sqlite3 स्थापित नहीं करना चाहता हूं।

पायथन sqlite3 मॉड्यूल में, हम एक डीबी बना और संपादित कर सकते हैं।

लेकिन, मुझे एक तालिका में डेटा-फ़ाइल आयात करने का कोई तरीका नहीं मिला है, पंक्तियों को एक-एक करके डालने के अलावा।

कोई अन्य तरीका?

उत्तर

7

आप के बजाय एक

द्वारा एक डालने के executemany आदेश का उपयोग करने देता है कहते हैं कि मैं निम्नलिखित सामग्री

"Hugo","Boss" 
"Calvin","Klein" 

और मूल रूप से सीएसवी मॉड्यूल के साथ खुला साथ users.csv है और यह करने के लिए पारित एक शॉट में डाल सकता है .executemany फ़ंक्शन

import csv,sqlite3 

persons= csv.reader(open("users.csv")) 
con = sqlite3.connect(":memory:") 

con.execute("create table person(firstname, lastname)") 
con.executemany("insert into person(firstname, lastname) values (?, ?)", persons) 

for row in con.execute("select firstname, lastname from person"): 
    print row 

#(u'Hugo', u'Boss') 
#(u'Calvin', u'Klein') 
+0

धन्यवाद, एस। मार्क। यह बहुत उपयोगी है। ऐसा लगता है कि ".import" जैसा काम नहीं है? – user343638

+0

@cyaos: वहाँ नहीं है। वैसे, प्रश्न SO में बहुत लोकप्रिय है, उदाहरण के लिए: http://stackoverflow.com/questions/2346074/execute-sqlite3-dot-commands-from-python-or-register-collation-in-command-line और आपको एक और बात पता होना चाहिए कि सीआईएल में '.import' बल्कि आदिम है: यह सिर्फ विभाजक पर विभाजित होता है और जब डेटा में विभाजक मूल्य उद्धृत किया जाता है तो डेटा में विभाजक होता है। – newtover

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