Блок данных / ADF python помощь - PullRequest
2 голосов
/ 09 апреля 2019

Требуется помощь в выполнении сценария Python из блоков данных Azure.Попросите подключиться к базам данных с помощью скрипта Python и прочитать данные из таблицы и вызвать электронную почту с содержимым из таблицы.

Вот мой пример сценария.Он отлично работает из моего локального, однако я не уверен, как заставить его работать на Databricks или фабрике данных.

import pyodbc
import settings
import sendgrid
import time
from sendgrid.helpers.mail import *

username = settings.username
password = settings.password
server = settings.server
database = settings.database
driver= '{SQL Server}'
connection_string = 'DRIVER={driver};PORT=1433;SERVER={server};DATABASE= 
{database};
UID={username};
PWD={password}'.format(driver=driver, server=server, 
database=database, username=username, password=password)
cnxn = pyodbc.connect(connection_string)

cursor= cnxn.cursor()
cursor.execute("Select Job_status as Status, COUNT(*) AS 
count FROM demo_table group by Job_status")
arr=[]
while 1:
row = cursor.fetchone()
if not row:
break
print(row.Status, row.count)
arr.append(row.Status+" "+str(row.count))
Status = arr[0] , arr[1]
cnxn.close()

sg = sendgrid.SendGridAPIClient(apikey='***********************')
from_email = Email("********************")
to_email = Email("****************************")
subject = "Job Monitoring | Job Failures"
content = Content("text/html", value = 'Hi,Provided are the details of the 
jobs.' +str(Status[0])+''+str(Status[1]) +'Regards,Team')
mail = Mail(from_email, subject, to_email, content)
response = sg.client.mail.send.post(request_body=mail.get())"

Как только работа завершена, она в идеале должна прочитать данные из таблицы и затем вызватьэлектронная почта с деталями работы.

Пожалуйста, помогите!

1 Ответ

2 голосов
/ 10 апреля 2019

Я вижу, что для вашего кода требуются две сторонние библиотеки Python, поэтому сначала вам нужно установить их в блоки данных Azure, как показано ниже.

  1. Установить пакет sendgrid относительно просто, как показано на рисунках ниже.

    Рис 1.1. Нажмите кнопку Launch Workspace на портале Azure и войдите в систему. enter image description here

    Рис 1.2. Перейдите на вкладку Clusters и Create Cluster, а затем щелкните ссылку Libraries вашего кластера. enter image description here

    Рис 1.3. Нажмите кнопку Install New и выберите источник библиотеки PyPI, чтобы ввести имя пакета от sendgrid до Install enter image description here

    Рис. 1.4. Сразу же был установлен пакет sendgrid enter image description here

  2. Следуйте за блогом Executing SQL Server Stored Procedures from Databricks (PySpark), чтобы установить pyodbc пакет с необходимыми linux-пакетами, как показано ниже.

    Рис 2.1. Создайте новый блокнот install_pyodbc для следующей установки enter image description here

    Рис 2.2. Чтобы проверить версию дистрибутива Linux и следовать блогу, чтобы установить эти пакеты enter image description here

    Рис 2.3. Попробуйте подключиться и запросить базу данных через pyodbc, все работает enter image description here

    import pyodbc
    connection_string = "Driver={ODBC Driver 17 for SQL Server};Server=tcp:<your db name>.database.windows.net,1433;Database=<db name>;Uid=<username>@<dbinstance name>;Pwd=<password>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"
    cnxn = pyodbc.connect(connection_string)
    cursor= cnxn.cursor()
    cursor.execute("select * from table")
    row = cursor.fetchone()
    if row:
        print(row)
    

Затем вы можете создать новый блокнот для запуска вашего кода. А для интеграции с фабрикой данных Azure обратитесь к официальному документу Transform data by running a Python activity in Azure Databricks, чтобы узнать, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...