<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Connecting to SQL on Databricks Using SQLAlchemy or pyodbc in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/connecting-to-sql-on-databricks-using-sqlalchemy-or-pyodbc/m-p/112816#M44341</link>
    <description>&lt;P&gt;&lt;SPAN&gt;On Databricks, when I try to connect to SQL using SQLAlchemy or pyodbc to run delete queries on a specific table, I get this error: &lt;STRONG&gt;&lt;SPAN class=""&gt;(pyodbc.Error) ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)".&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN class=""&gt;"""&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN class=""&gt;import sqlalchemy&lt;BR /&gt;import urllib&lt;BR /&gt;server_ = "&amp;lt;server&amp;gt;"&lt;BR /&gt;username = "&amp;lt;usrname&amp;gt;"&lt;BR /&gt;password = "pwd"&lt;BR /&gt;SQLCred = f"UID="+username+";PWD="+password+";"&lt;BR /&gt;params = urllib.parse.quote_plus("DRIVER={ODBC Driver 17 for SQL Server};SERVER="+server_+";DATABASE=db_test;" + SQLCred + "Trusted_Connection=Yes;")&lt;BR /&gt;engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)&lt;BR /&gt;conn = engine.connect()&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN class=""&gt;"""&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Does anyone have any idea why this error is generated and how it could be fixed?&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 17 Mar 2025 14:55:23 GMT</pubDate>
    <dc:creator>YOUKE</dc:creator>
    <dc:date>2025-03-17T14:55:23Z</dc:date>
    <item>
      <title>Connecting to SQL on Databricks Using SQLAlchemy or pyodbc</title>
      <link>https://community.databricks.com/t5/data-engineering/connecting-to-sql-on-databricks-using-sqlalchemy-or-pyodbc/m-p/112816#M44341</link>
      <description>&lt;P&gt;&lt;SPAN&gt;On Databricks, when I try to connect to SQL using SQLAlchemy or pyodbc to run delete queries on a specific table, I get this error: &lt;STRONG&gt;&lt;SPAN class=""&gt;(pyodbc.Error) ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)".&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN class=""&gt;"""&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN class=""&gt;import sqlalchemy&lt;BR /&gt;import urllib&lt;BR /&gt;server_ = "&amp;lt;server&amp;gt;"&lt;BR /&gt;username = "&amp;lt;usrname&amp;gt;"&lt;BR /&gt;password = "pwd"&lt;BR /&gt;SQLCred = f"UID="+username+";PWD="+password+";"&lt;BR /&gt;params = urllib.parse.quote_plus("DRIVER={ODBC Driver 17 for SQL Server};SERVER="+server_+";DATABASE=db_test;" + SQLCred + "Trusted_Connection=Yes;")&lt;BR /&gt;engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)&lt;BR /&gt;conn = engine.connect()&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN class=""&gt;"""&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Does anyone have any idea why this error is generated and how it could be fixed?&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Mar 2025 14:55:23 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/connecting-to-sql-on-databricks-using-sqlalchemy-or-pyodbc/m-p/112816#M44341</guid>
      <dc:creator>YOUKE</dc:creator>
      <dc:date>2025-03-17T14:55:23Z</dc:date>
    </item>
    <item>
      <title>Re: Connecting to SQL on Databricks Using SQLAlchemy or pyodbc</title>
      <link>https://community.databricks.com/t5/data-engineering/connecting-to-sql-on-databricks-using-sqlalchemy-or-pyodbc/m-p/112819#M44343</link>
      <description>&lt;P&gt;This code will not work. You can try this:&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;import&lt;/SPAN&gt;&lt;SPAN class=""&gt; os&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;from&lt;/SPAN&gt;&lt;SPAN class=""&gt; sqlalchemy &lt;/SPAN&gt;&lt;SPAN class=""&gt;import&lt;/SPAN&gt;&lt;SPAN class=""&gt; create_engine&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;access_token &lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt; os&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;getenv&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"DATABRICKS_TOKEN"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;server_hostname &lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt; os&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;getenv&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"DATABRICKS_SERVER_HOSTNAME"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;http_path &lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt; os&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;getenv&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"DATABRICKS_HTTP_PATH"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;catalog &lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt; os&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;getenv&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"DATABRICKS_CATALOG"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;schema &lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt; os&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;getenv&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"DATABRICKS_SCHEMA"&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;engine &lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;&lt;SPAN class=""&gt; create_engine&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;url &lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;f"databricks://token:&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;access_token&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;@&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;server_hostname&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;?"&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;f"http_path=&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;http_path&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;amp;catalog=&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;catalog&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;amp;schema=&lt;/SPAN&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;schema&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Mar 2025 16:11:46 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/connecting-to-sql-on-databricks-using-sqlalchemy-or-pyodbc/m-p/112819#M44343</guid>
      <dc:creator>MariuszK</dc:creator>
      <dc:date>2025-03-17T16:11:46Z</dc:date>
    </item>
    <item>
      <title>Re: Connecting to SQL on Databricks Using SQLAlchemy or pyodbc</title>
      <link>https://community.databricks.com/t5/data-engineering/connecting-to-sql-on-databricks-using-sqlalchemy-or-pyodbc/m-p/113791#M44635</link>
      <description>&lt;P&gt;I was able to solve the problem! the problem was because the driver was missing and so pyodbc or sqlAlchemy can't find it. So I used the native Java API and it is working.&lt;BR /&gt;This is the example code:&lt;/P&gt;&lt;P&gt;jdbcUsername = "username"&lt;BR /&gt;jdbcPassword = "password"&lt;BR /&gt;driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"&lt;BR /&gt;jdbcUrl = "jdbc:sqlserver://prtc.database.windows.net:1433;database=db02"&lt;BR /&gt;connectionProperties = {&lt;BR /&gt;"user": jdbcUsername,&lt;BR /&gt;"password": jdbcPassword,&lt;BR /&gt;"driver": driverClass&lt;BR /&gt;}&lt;BR /&gt;connection = spark._jvm.java.sql.DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword)&lt;/P&gt;&lt;P&gt;stmt = connection.createStatement()&lt;BR /&gt;sql = "delete from dbo.ExampleTable where ID = 2"&lt;/P&gt;&lt;P&gt;stmt.execute(sql)&lt;BR /&gt;connection.close()&lt;/P&gt;</description>
      <pubDate>Thu, 27 Mar 2025 10:21:56 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/connecting-to-sql-on-databricks-using-sqlalchemy-or-pyodbc/m-p/113791#M44635</guid>
      <dc:creator>YOUKE</dc:creator>
      <dc:date>2025-03-27T10:21:56Z</dc:date>
    </item>
  </channel>
</rss>

