2017-01-18 2 views
2

Я использую pymssql, чтобы написать df в mssql, но не работал.Как написать dataframe в mssql с помощью pymssql?

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 РЯДЫ:

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 есть SQLAlchemy-1.1.4-py2.7.egg-info, SQLAlchemy-1.1.5.dist-info и sqlalchemy. Просто удалите все, кроме sqlalchemy, NoSuchColumnError: "Could not locate column in row for column '0'" будет разрешен.

1

догадка SQL Server не нравятся имена столбцов, как 0, так что вы должны переименовать столбцы, прежде чем написать DF в SQL Server.

Таким образом, вы можете попробовать на следующие решения:

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

Нет имен столбцов, таких как 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') ',' engine = create_engine ('mssql + pymssql: // sa: suzhou @ localhost/test_python') 'правильно? –

+0

@runningman, извините, в этом случае я понятия не имею ... Попробуйте google для 'SQLAlchemy' +' NoSuchColumnError: "Не удалось найти столбец в строке для столбца" ' – MaxU

+0

Tks все равно 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. Как выглядит ваш dataframe?

Смежные вопросы