我可以将Python Pandas数据框导出到MS SQL吗?

Dav*_*d M 7 python sql sql-server-2008 pandas

我正在使用pymssql和Pandas sql包将数据从SQL加载到dataframe带有frame_query 的Pandas中.

我想使用write_frame将它发送回SQL数据库,但我无法找到很多关于此的文档.特别是,有一个参数flavor ='sqlite'.这是否意味着到目前为止Pandas只能导出到SQLite?我的公司正在使用MS SQL Server 2008,所以我需要导出到那个.

lbo*_*lla 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
Run Code Online (Sandbox Code Playgroud)

但写一个简单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()
Run Code Online (Sandbox Code Playgroud)