2017-01-18 3 views
2

Ich benutze Pymssql, um ein DF in mssql zu schreiben, aber hat nicht funktioniert.Wie schreibe ich Datenrahmen in Mssql mit Pymssql?

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

data.to_sql('phill',engine) 

Mit einem Fehler unten. Was ist los mit dir?

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

TOP 5 ROWS:

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 

Antwort

0

Es ist das Problem wegen sqlalchemy. In meinen Python Sit-Packages gibt es SQLAlchemy-1.1.4-py2.7.egg-info, SQLAlchemy-1.1.5.dist-info und sqlalchemy. Löschen Sie einfach alle außer sqlalchemy, die NoSuchColumnError: "Could not locate column in row for column '0'" wird gelöst.

1

Vermutung SQL Server Spaltennamen nicht wie 0 gefallen, so dass Sie Ihre Spalten umbenennen müssten, bevor Sie Ihren DF in SQL Server zu schreiben.

So können Sie die Folowing Lösung versuchen:

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

Keine Spaltennamen wie 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','UCR_General ', u'Text_General_Code','Police_Districts ','Month', u'Lon ','Lat'], dtype = 'Objekt') ',' engine = create_engine ('mssql + pymssql: // sa: suzhou @ localhost/test_python') 'ist richtig? –

+0

@runningman, sorry, in diesem Fall habe ich keine Ahnung ... Versuchen Sie google nach 'SQLAlchemy' +' NoSuchColumnError: "Konnte Spalte in Zeile für Spalte nicht finden" ' – MaxU

+0

Tks alle die gleiche MaxU. Ich mache es auf einem anderen Computer. Es klappt. Vielleicht ist es das Problem meiner Datenbank. –

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) 

funktioniert mit einem lokalen Server aber mit Pyodbc. Wie sieht dein Dataframe aus?

Verwandte Themen