在 azure databrick 中使用 pyodbc 连接 SQL 服务器
using pyodbc in azure databrick for connecting with SQL server
import pyodbc
pyodbc.connect('Driver={SQL SERVER};'
'Server=server name;'
'Database = database name;'
'UID='my uid;'
'PWD= 'my password;'
'Authentication = ActiveDirectoryPassword')
运行 databrick notebook 中的上述代码出现以下错误
Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'SQL SERVER' : file not found (0) (SQLDriverConnect)")
默认情况下,Azure Databricks 没有安装 ODBC 驱动程序。
对于 SQL 服务器: 您可以使用以下脚本解决问题
sudo apt-get -q -y install unixodbc unixodbc-dev
sudo apt-get -q -y install python3-dev
sudo pip install --upgrade pip
pip install pyodbc
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql
对于 Azure SQL 数据库: 运行 在单个单元格中执行以下命令以在 Azure Databricks 群集上安装我的 SQL ODBC 驱动程序.
%sh
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql17
您发布的内容看起来像是直接的 Python 代码。在 Databricks 环境中,情况与在本地计算机上略有不同。
像这样尝试。
import pyodbc
server = '<server>.database.windows.net'
database = '<database>'
username = '<username>'
password = '<password>'
driver= '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName FROM [SalesLT].[ProductCategory] pc JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
import pyodbc
pyodbc.connect('Driver={SQL SERVER};'
'Server=server name;'
'Database = database name;'
'UID='my uid;'
'PWD= 'my password;'
'Authentication = ActiveDirectoryPassword')
运行 databrick notebook 中的上述代码出现以下错误
Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'SQL SERVER' : file not found (0) (SQLDriverConnect)")
默认情况下,Azure Databricks 没有安装 ODBC 驱动程序。
对于 SQL 服务器: 您可以使用以下脚本解决问题
sudo apt-get -q -y install unixodbc unixodbc-dev
sudo apt-get -q -y install python3-dev
sudo pip install --upgrade pip
pip install pyodbc
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql
对于 Azure SQL 数据库: 运行 在单个单元格中执行以下命令以在 Azure Databricks 群集上安装我的 SQL ODBC 驱动程序.
%sh
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql17
您发布的内容看起来像是直接的 Python 代码。在 Databricks 环境中,情况与在本地计算机上略有不同。
像这样尝试。
import pyodbc
server = '<server>.database.windows.net'
database = '<database>'
username = '<username>'
password = '<password>'
driver= '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName FROM [SalesLT].[ProductCategory] pc JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()