title: Getting a warning when using a pyodbc Connection object with pandas
body: <p>I am trying to make sense of the following error that I started getting when I setup my python code to run on a VM server, which has 3.9.5 installed instead of 3.8.5 on my desktop.  Not sure that matters, but it could be part of the reason.</p>
  <p>The error</p>
  <pre><code>C:\ProgramData\Miniconda3\lib\site-packages\pandas\io\sql.py:758: UserWarning: pandas only support SQLAlchemy connectable(engine/connection) or
  database string URI or sqlite3 DBAPI2 connection
  other DBAPI2 objects are not tested, please consider using SQLAlchemy
    warnings.warn(
  </code></pre>
  <p>This is within a fairly simple .py file that imports pyodbc &amp; sqlalchemy fwiw.  A fairly generic/simple version of sql calls that yields the warning is:</p>
  <pre><code>myserver_string = &quot;xxxxxxxxx,nnnn&quot;
  db_string = &quot;xxxxxx&quot;
  
  cnxn = &quot;Driver={ODBC Driver 17 for SQL Server};Server=tcp:&quot;+myserver_string+&quot;;Database=&quot;+db_string +&quot;;TrustServerCertificate=no;Connection Timeout=600;Authentication=ActiveDirectoryIntegrated;&quot;
  
  def readAnyTable(tablename, date):
      conn = pyodbc.connect(cnxn)
      
      query_result = pd.read_sql_query(
              ''' 
                   SELECT *
                   FROM [{0}].[dbo].[{1}]
                  where Asof &gt;= '{2}'
              '''.format(db_string,tablename,date,), conn)
              
      conn.close()
      
      return query_result
  </code></pre>
  <p>All the examples I have seen using pyodbc in python look fairly similar.  Is pyodbc becoming deprecated?  Is there a better way to achieve similar results without warning?</p>