title: How to create sql alchemy connection for pandas read_sql with sqlalchemy+pyodbc and multiple databases in MS SQL Server?
body: <p>I am trying to use 'pandas.read_sql_query' to copy data from MS SQL Server into a pandas DataFrame. I need to do multiple joins in my SQL query. The tables being joined are on the same server but in different databases. The query I am passing to pandas works fine inside MS SQL Server Management Studio. In a Jupyter Notebook I tried to query data like so (to make things readable the query itself is simplified to just 2 joins and generic names are used):</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>This does not work and returns an error:</p>
  
  <pre><code>DBAPIError: (pyodbc.Error) ('IM010', '[IM010] [Microsoft][��������� ��������� ODBC] ������� ������� ��� ��������� ������ (0) (SQLDriverConnect)')
  </code></pre>
  
  <p>It seems that the problem is in the engine which does not include information about the database, because everything works fine with the next kind of code, where I include database in the engine:</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>but breaks like the code with joins above if I don't include database in the engine, but add it to the query like so:</p>
  
  <pre><code>myQuery = 'select Field1 from db1.schema.Table1'
  engine = sql.create_engine('mssql+pyodbc://{}?driver={}'.format(server, 
  driver))
  df = pd.read_sql_query(myQuery, engine)
  </code></pre>
  
  <p>So how should I specify the pandas.read_sql_query 'sql' and 'con' parameters in 
  this case when I need to join tables from different databases but the same server?</p>
  
  <p>P.S. I only have read access to this server I am connecting to. I can not create new tables or views or anything like that.</p>
  
  <p>Update:
  The MS SQL Server version is 2008 R2.</p>
  
  <p>Update 2: I am using Python 3.6 and Windows 10.</p>