2012-07-03 7 views
6

मैं pymssql और पांडस एसक्यूएल पैकेज का उपयोग कर रहा हूं ताकि एसक्यूएल से डेटा को फ्रेम_क्वायरी के साथ पांडस dataframe में लोड किया जा सके।क्या मैं एमएस एसक्यूएल में पाइथन पांडस डेटाफ्रेम निर्यात कर सकता हूं?

मैं इसे वापस लिखने के लिए SQL डेटाबेस पर भेजना चाहता हूं, लेकिन मैं इस पर अधिक दस्तावेज नहीं ढूंढ पा रहा हूं। विशेष रूप से, पैरामीटर स्वाद = 'स्क्लाइट' होता है। क्या इसका मतलब यह है कि अब तक पांडु केवल SQLite को निर्यात कर सकते हैं? मेरी फर्म एमएस एसक्यूएल सर्वर 2008 का उपयोग कर रही है इसलिए मुझे इसे निर्यात करने की आवश्यकता है।

उत्तर

5

दुर्भाग्य से, हाँ। फिलहाल sqlitewrite_frame द्वारा समर्थित एकमात्र "स्वाद" है। https://github.com/pydata/pandas/blob/master/pandas/io/sql.py#L155

def write_frame(frame, name=None, con=None, flavor='sqlite'): 
    """ 
    Write records stored in a DataFrame to SQLite. The index will currently be 
    dropped 
    """ 
    if flavor == 'sqlite': 
     schema = get_sqlite_schema(frame, name) 
    else: 
     raise NotImplementedError 

देखें लेखन एक सरल write_frame काफी आसान है, हालांकि होना चाहिए। उदाहरण के लिए, कुछ इस तरह काम कर सकते हैं (अपरीक्षित!):

import pymssql               
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase') 
cur = conn.cursor()             

# frame is your dataframe            
wildcards = ','.join(['?'] * len(frame.columns))      
data = [tuple(x) for x in frame.values] 
table_name = 'Table' 

cur.executemany("INSERT INTO %s VALUES(%s)" % (table_name, wildcards), data) 
conn.commit() 
+0

धन्यवाद यह लाइन पता चला है। मुझे अपने कंप्यूटर पर एक टेक्स्ट फ़ाइल बनाने के लिए write_csv का उपयोग करना और फिर बीसीपी को कॉल करने के लिए ओएससिस्टम का उपयोग करना एक और आसान विकल्प था। –

1

बस किसी और ने इस में कुछ समय का उपयोग करने की कोशिश की को बचाने के लिए।

wildcards = ','.join(['?'] * len(frame.columns)) 

होना चाहिए::

wildcards = ','.join(['%s'] * len(frame.columns)) 

आशा में मदद करता है कि

+0

यह आपके द्वारा उपयोग किए जा रहे विशिष्ट डेटाबेस पर निर्भर करता है, है ना? –

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