2017-01-18 2 views
2

mssql에 df를 쓰는데 pymssql을 사용하고 있지만 작동하지 않았습니다.pymssql을 사용하여 mssql에 dataframe을 쓰는 방법은 무엇입니까?

from sqlalchemy import create_engine 
import pymssql 
engine = create_engine('mssql+pymssql://sa:[email protected]/test_python') 

data.to_sql('phill',engine) 

아래와 같은 오류가 있습니다. 뭐가 문제 야?

NoSuchColumnError: "Could not locate column in row for column '0'" 

TOP 5 ROWS : 당신이 SQL 서버로 DF를 작성하기 전에 열 이름을 변경해야하므로

Dc_Dist Psa Dispatch_Date_Time Dispatch_Date Dispatch_Time Hour Dc_Key Location_Block UCR_General Text_General_Code Police_Districts Month Lon Lat 
3 35 D 2009-07-19 01:09:00 2009-07-19 01:09:00 1 200935061008 5500 BLOCK N 5TH ST 1500.0 Weapon Violations 20.0 2009-07 -75.130477 40.036389 
4 9 R 2009-06-25 00:14:00 2009-06-25 00:14:00 0 200909030511 1800 BLOCK WYLIE ST 2600.0 All Other Offenses 8.0 2009-06 -75.166350 39.969532 
5 17 1 2015-04-25 12:50:00 2015-04-25 12:50:00 12 201517017705 800 BLOCK S BROAD ST 600.0 Thefts 13.0 2015-04 -75.166412 39.940070 
6 23 K 2009-02-10 14:33:00 2009-02-10 14:33:00 14 200923006310 2200 BLOCK RIDGE AVE 800.0 Other Assaults 16.0 2009-02 -75.171149 39.979586 
12 22 3 2015-10-06 18:18:00 2015-10-06 18:18:00 18 201522089374 1500 BLOCK N 15TH ST 600.0 Thefts 16.0 2015-10 -75.160229 39.976134 

답변

0

sqlalchemy 때문에 문제가 발생했습니다. 내 python sit-packages에는 SQLAlchemy-1.1.4-py2.7.egg-info, SQLAlchemy-1.1.5.dist-infosqlalchemy이 있습니다. sqlalchemy을 제외하고 모두 삭제하면 NoSuchColumnError: "Could not locate column in row for column '0'"이 해결됩니다.

1

추측 SQL 서버, 0과 같은 열 이름을 좋아하지 않는다.

그래서 당신은 folowing 솔루션을 시도 할 수 있습니다 :

data.add_prefix('col_').to_sql('phill',engine) 
+0

'Index ([u'Dc_Dist', u'Psa ', u'Dispatch_Date_Time', u'Dispatch_Date ', u'Dispatch_Time', u'Hour ', u'Dc_Key', u]와 같은 열 이름이 없습니다. 'Location_Block', u'UCR_General ', u'Text_General_Code', u'Police_Districts ', u'Month', u'Lon ', u'Lat'], dtype = 'object')', 엔진 = create_engine ('mssql + pymssql : // sa : suzhou @ localhost/test_python')'맞습니까? –

+0

@runningman, 죄송합니다,이 경우에는 전혀 모르겠다. 'SQLAlchemy' +'NoSuchColumnError : google에 '열을위한 행을 찾을 수 없습니다.'행이 표시됩니다. – MaxU

+0

모두 동일한 MaxU입니다. 나는 다른 컴퓨터에서 그것을한다. 그것은 작동합니다. 어쩌면 내 데이터베이스의 문제 일 수 있습니다. –

1
from sqlalchemy import create_engine 
import pyodbc 
import pandas as pd 
import numpy as np 

df = pd.DataFrame(index=range(3), columns=range(3), data=np.zeros((3,3))) 
engine = create_engine("mssql+pyodbc://.\SQLEXPRESS/test_python?driver=SQL server") 

df.to_sql('test', con=engine) 

작품 벌금을 로컬 서버 만 pyodbc를 사용하여. 데이터 프레임은 어떻게 생겼습니까?