2014-09-26 5 views
0

나는 MS SQL DB에 파이썬 데이터 프레임을 넣어하려고 나는 다음과 같은 오류쓰기 파이썬 (팬더) 데이터 프레임

기능

def put_to_server(df):  # df is a pandas data frame 
    server="KORNBSVM04\MSSQLSERVER2012" 
    Driver="{SQL Server}" 
    userid='' 
    pswd='' 
    cnxn = pyodbc.connect(driver=Driver, server=server, database="CIHOTLINE",uid=userid, pwd=pswd) 
    cur=cnxn.cursor() 
    df.to_sql(name='dbo.test',con=cnxn) 

무엇입니까 ERROR

File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 950, in to_sql 
index_label=index_label) 
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 475, in to_sql 
index_label=index_label) 
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1084, in to_sql 
index_label=index_label) 
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 543, in __init__ 
if self.pd_sql.has_table(self.name): 
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1094, in has_table 
return len(self.execute(query).fetchall()) > 0 
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1041, in execute 
raise_with_traceback(ex) 
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1030, in execute 
cur.execute(*args) 
pandas.io.sql.DatabaseError: Execution failed on sql: SELECT name FROM sqlite_master WHERE type='table' AND name='dbo.test'; 
+0

을 사용하는 팬더의 어떤 버전 :

from sqlalchemy import create_engine engine = create_engine('mssql+pyodbc://scott:[email protected]') df.to_sql('test', engine) 

이에 판다 설명서를 참조하십시오? – joris

답변

7

SQL 서버가 팬더 만 MySQL을 0.14 (그리고 SQLite는 이전에 지원되지 않았던 것은 기본으로했다 sqlite의. 따라서 오류가 발생합니다.) 그러나 팬더 0.14에서는 MS SQL 서버에 데이터 프레임을 쓰는 것이 지원됩니다.
그러나 이것을 사용하려면 pyobdc 연결 개체 대신 sqlalchemy 엔진 (docs 참조)을 사용해야합니다. 예 : 당신이 http://pandas.pydata.org/pandas-docs/stable/io.html#sql-queries