Comment écrire des données dans mssql en utilisant pymssql?

J'utilise pymssql pour écrire un df dans mssql, mais cela n'a pas fonctionné.

from sqlalchemy import create_engine import pymssql engine = create_engine('mssql+pymssql://sa:suzhou@localhost/test_python') data.to_sql('phill',engine) 

Avec une erreur ci-dessous. Qu'est-ce qui ne va pas?

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

TOP 5 RANGS:

  Dc_Dist Psa Dispatch_Date_Time Dispatch_Date Dispatch_Time Hour Dc_Key Location_Block UCR_General Text_General_Code Police_Dissortingcts 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 

Supposons que SQL Server n'aime pas les noms de colonnes comme 0, vous devrez donc renommer vos colonnes avant d'écrire votre DF dans SQL Server.

Vous pouvez donc essayer la solution suivante:

 data.add_prefix('col_').to_sql('phill',engine) 
 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) 

Fonctionne très bien avec un server local mais en utilisant pyodbc. À quoi ressemble votre dataframe?

C'est le problème à cause de sqlalchemy . Dans mes sit-packages python, il y a SQLAlchemy-1.1.4-py2.7.egg-info , SQLAlchemy-1.1.5.dist-info et sqlalchemy . Supprimez tout sauf sqlalchemy , le NoSuchColumnError: "Could not locate column in row for column '0'" sera résolu.