Wie zum erstellen von sql-alchemy-Verbindung für pandas read_sql mit sqlalchemy+pyodbc und mehrere Datenbanken in MS SQL Server?

Ich versuche, mit 'pandas.read_sql_query' kopieren der Daten aus MS SQL Server in ein pandas DataFrame. Ich brauche mehrere joins in meiner SQL-Abfrage. Die Tabellen, die verbunden werden, sind auf dem gleichen server, aber in verschiedenen Datenbanken. Die Abfrage, die ich bin übergeben pandas funktioniert innerhalb MS SQL Server Management Studio. In einem Jupyter Notebook habe ich versucht, Daten abzufragen, wie so (um Dinge zu machen, lesbar der Abfrage selbst ist vereinfacht, um nur 2 verbindungen und generische Namen verwendet werden):

import pandas as pd
import sqlalchemy as sql
import pyodbc

server = '100.10.10.10'
driver = 'SQL+Server+Native+Client+11.0'
myQuery = '''SELECT first.Field1, second.Field2
           FROM db1.schema.Table1 AS first
           JOIN db2.schema.Table2 AS second
           ON first.Id = second.FirstId
           '''
engine = sql.create_engine('mssql+pyodbc://{}?driver={}'.format(server, driver))
df = pd.read_sql_query(myQuery, engine)

Funktioniert dies nicht und gibt einen Fehler zurück:

DBAPIError: (pyodbc.Error) ('IM010', '[IM010] [Microsoft][��������� ��������� ODBC] ������� ������� ��� ��������� ������ (0) (SQLDriverConnect)')

Es scheint, dass das problem in der engine, die nicht enthalten Informationen über die Datenbank, da funktioniert alles einwandfrei mit der nächsten Art von code, wo ich die Datenbank in die engine:

myQuery = 'select Field1 from schema.Table1'
db = 'db1'
engine = sql.create_engine('mssql+pyodbc://{}/{}?driver={}'.format(server, db, driver))
df = pd.read_sql_query(myQuery, engine)

aber bricht wie der code mit joins oben, wenn ich nicht zählen-Datenbank in die engine, aber hinzufügen, um die Abfrage in etwa so:

myQuery = 'select Field1 from db1.schema.Table1'
engine = sql.create_engine('mssql+pyodbc://{}?driver={}'.format(server, 
driver))
df = pd.read_sql_query(myQuery, engine)

So, wie soll ich angeben, die pandas.read_sql_query 'sql' und 'con' - Parameter im
in diesem Fall, wenn ich brauche, um join-Tabellen aus verschiedenen Datenbanken, aber die gleichen server?

P. S. ich habe nur-lese-Zugriff auf diesen server bin ich verbunden wird. Ich kann nicht erstellen Sie neue Tabellen oder Ansichten oder so etwas.

Update:
Die MS SQL Server version 2008 R2.

Update 2: ich bin mit Python 3.6 und Windows 10.

  • was ist deine MS SQL Server version?
  • Es ist 2008 R2.
  • Versuchen SQL+Server+Native+Client+10.0 als Fahrer... Fragen
  • Ich habe gerade versucht zu tun, was Sie vorgeschlagen. Das Ergebnis ist das gleiche. Darüber hinaus, diese änderung in der Treiber-breakes den funktionierenden code die angegebene Datenbank in die engine. Es gibt eine ähnliche Fehlermeldung, mit Ausnahme der 'IM010' in der Fehlermeldung, wechseln Sie in den 'IM002'.
  • Ich habe auch versucht nur SQL+Server. Als Ergebnis der arbeiten code gearbeitet, aber das brechen code gibt einen Fehler zurück, mit 'IM002'.
  • möglicherweise möchten Sie überprüfen, dieser
  • Sorry, ich verstehe nicht, wie diese helfen können.

Schreibe einen Kommentar