2016-11-09 1 views
0

Ich versuche, Daten aus einer Datenbank, die ich besitze, in eine Datenbank zu verschieben, ich habe nur Lese-/Schreibberechtigungen auf (als temporäre Tabelle). Ich erhalte jedoch einen Fehler. Bitte beachten Sie die folgenden Code:SQLAlchemy df.to_sql MSSQL

import pandas as pd 
import pyodbc 
import sqlalchemy 

con = pyodbc.connect(r'Driver={SQL Server};Server=MYServer;Database=DB_People;Trusted_Connection=yes;) 

sSQL = "SELECT * FROM tbl_People;" 

df = pd.read_sql(sSQL, con) 

con.close() 

con = pyodbc.connect(r'Driver={SQL Server};Server=NOT_MyServer;Database=DB_People;Trusted_Connection=yes;) 

sSQL = "CREATE TABLE [##People Table] (p_Name varchar(25), p_DOB char(10));" 

con.execute(sSQL) 

con.committ() 

engine = sqlalchemy.create_engine('mssql://NOT_MyServer/DB_People?Driver=SQL+Server+Native+Client+11.0?trusted_connection=yes') 

df.to_sql("##People Table") 

ich den Fehler:

DBAPIError: (pyodbc.Error) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') 

Irgendwelche Hinweise darauf, was das Problem ist? Ich spezifiziert einen Treiber in meiner Verbindung und ich weiß, dass die Temp-Tabelle vorhanden ist, weil, wenn ich über SSMS verbinde ich die Tabelle abfragen kann (obwohl es keine Aufzeichnungen zu diesem Zeitpunkt sind.

I

Antwort

0

Es scheint, als ob ich das Problem (e) gefunden:

  1. die „Create Table“ Funktion ist nicht mehr benötigt als die df.to_sql den Tisch
  2. Statt die „+“ in den Treibernamen erstellt, ich war in der Lage, sie zu ersetzen mit % 20

Das hat bei mir funktioniert.