7

私はとPandassqlpymssqlパッケージを使用して、frame_queryを使用してSQLからPandasにデータをロードしていますdataframe

write_frameを使用してSQLデータベースに送り返したいのですが、これに関する多くのドキュメントを見つけることができませんでした。特に、パラメータflavor='sqlite'があります。これは、これまでのところパンダがSQLiteにしかエクスポートできないことを意味しますか?私の会社はMSSQLServer 2008を使用しているので、そこにエクスポートする必要があります。

4

2 に答える 2

5

残念ながらそうです。現時点sqliteでは、によってサポートされている唯一の「フレーバー」write_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()
于 2012-07-04T13:39:22.140 に答える
1

いつかこれを使おうとした他の誰かを救うためだけに。次のようになります。

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

する必要があります:

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

お役に立てば幸い

于 2013-02-02T09:59:16.003 に答える