Bạn có thể viết python trong máy chủ sql không?

Hôm nay chúng ta sẽ xem xét cách chạy mã Python trong cơ sở dữ liệu Microsoft SQL Server, bạn sẽ tìm hiểu những gì bạn cần làm để kích hoạt tính năng này và cách chạy mã Python bằng cách sử dụng lệnh T-SQL thông thường

CÁC ĐIỀU KIỆN CẦN THIẾT VÀ CHUẨN BỊ SQL SERVER

Để thực thi mã Python trong cơ sở dữ liệu SQL Server, phải đáp ứng một số điều kiện nhất định

MICROSOFT SQL SERVER LÀ PHIÊN BẢN ÍT NHẤT 2017

Hỗ trợ cho ngôn ngữ Python chỉ xuất hiện trong Microsoft SQL Server 2017, do đó, chỉ có thể thực thi mã trên Python bắt đầu từ phiên bản SQL Server 2017

PHẢI CÀI ĐẶT “DỊCH VỤ MÁY HỌC”

Trong Microsoft SQL Server 2016, lần đầu tiên có thể thực hiện các lệnh trực tiếp trong cơ sở dữ liệu bằng các ngôn ngữ khác, đặc biệt là ngôn ngữ R

Vào năm 2017, thành phần này được đặt tên là “Dịch vụ đào tạo máy”, như đã lưu ý, đã thêm hỗ trợ cho ngôn ngữ Python

Do đó, để chạy mã Python, trong cơ sở dữ liệu SQL Server phải được cài đặt “Dịch vụ đào tạo máy”, điều này làm tăng thêm khả năng của chúng tôi

Nếu thành phần “Machine Training Services” chưa được cài đặt thì việc chạy mã Python trong cơ sở dữ liệu Microsoft SQL Server sẽ không hoạt động

“DỊCH VỤ ĐÀO TẠO MÁY” TRONG SQL SERVER LÀ GÌ

Dịch vụ đào tạo máy là một thành phần SQL Server cho phép bạn chạy tập lệnh bằng Python và R với dữ liệu quan hệ

Các lệnh được thực thi trong cơ sở dữ liệu mà không cần di chuyển những dữ liệu này ra bên ngoài SQL Server, chẳng hạn như trên mạng tới một máy chủ khác, giúp mở rộng đáng kể các tính năng tiêu chuẩn của SQL Server và ngôn ngữ T-SQL

CÀI ĐẶT THÀNH PHẦN “DỊCH VỤ ĐÀO TẠO MÁY”

Nếu bạn chưa cài đặt “Machine Training Services”, bạn có thể cài đặt lại chúng. Để thực hiện việc này, hãy chạy “Trung tâm cài đặt máy chủ SQL“, trên tab “Cài đặt”, chọn “Cài đặt mới của phiên bản SQL Server bị cô lập hoặc thêm các thành phần vào bản cài đặt hiện có“

Sau đó, trên tab “Lựa chọn thành phần” trong phần “Dịch vụ hạt nhân DBMS”, đánh dấu thành phần “Dịch vụ đào tạo máy [trong cơ sở dữ liệu]” cũng như ngôn ngữ bạn muốn sử dụng, trong trường hợp của chúng tôi là Python

Sau đó nhấp vào “Chấp nhận” trên trang “Chấp nhận cài đặt”

Sau khi cài đặt xong, tốt hơn hết là khởi động lại máy tính

Ghi chú. Tùy chọn cài đặt này yêu cầu truy cập Internet. Nếu không có truy cập internet, bạn có thể sử dụng trình cài đặt độc lập

TRÊN MÁY CHỦ SQL, BẠN PHẢI CHO PHÉP SỬ DỤNG CÁC TẬP ĐOẠN BÊN NGOÀI

Theo mặc định, việc thực thi các tập lệnh bên ngoài bằng ngôn ngữ Python trong Microsoft SQL Server bị cấm, vì vậy trước tiên bạn phải bật tính năng này trên SQL Server

CÁCH CHO PHÉP SỬ DỤNG Script BÊN NGOÀI TRONG SQL SERVER

Để cho phép sử dụng tập lệnh bên ngoài bằng ngôn ngữ Python, bạn phải bật tham số hệ thống “bật tập lệnh bên ngoài” trong SQL Server, điều này được thực hiện bằng quy trình hệ thống sp_configure

sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH OVERRIDE

Sau đó, bạn nên khởi động lại dịch vụ máy chủ SQL

Để kiểm tra giá trị của tham số, bạn có thể thực hiện lệnh sau

EXEC sp_configure 'external scripts enabled'

Nếu giá trị tham số run_value là 1, thì việc sử dụng các tập lệnh bên ngoài trong SQL Server được cho phép

THỰC HIỆN MÃ PYTHON TRONG MICROSOFT SQL SERVER TRONG T-SQL

Mã Python được thực thi, cũng như mã của các ngôn ngữ khác, chẳng hạn như R, trong Microsoft SQL Server bằng cách sử dụng thủ tục lưu trữ hệ thống sp_execute_external_script

sp_execute_external_script là một thủ tục được lưu trữ trong hệ thống thực thi tập lệnh bằng các ngôn ngữ được hỗ trợ [R, Python], được chuyển dưới dạng tham số đầu vào

CÚ PHÁP SP_EXECUTE_EXTERNAL_SCRIPT

sp_execute_external_script
@language = N'language',
@script = N'script'
[ , @input_data_1 = N'input_data_1' ]
[ , @input_data_1_name = N'input_data_1_name' ].
[ , @output_data_1_name = N'output_data_1_name' ].
[ , @parallel = 0 | 1 ]
RECONFIGURE WITH OVERRIDE0
RECONFIGURE WITH OVERRIDE1
RECONFIGURE WITH OVERRIDE2

Ở đâu,

  • @language — tham số trong đó ngôn ngữ tập lệnh được chỉ định;
  • @script — văn bản kịch bản;
  • @input_data_1 — tham số chỉ định dữ liệu đầu vào được sử dụng bởi tập lệnh bên ngoài ở dạng truy vấn T-SQL;
  • @input_data_1_name — tham số chỉ định tên của biến được sử dụng để biểu thị truy vấn được xác định trong @input_data_1;
  • @output_data_1_name — tham số chỉ định tên biến trong tập lệnh bên ngoài chứa dữ liệu được trả về SQL Server sau lệnh gọi thủ tục được lưu trữ;
  • @parallel — tham số bao gồm việc thực thi song song các tập lệnh R [giá trị 1]. Giá trị mặc định cho tham số này là 0 [không có song song];
  • @params - khai báo các tham số đầu vào được sử dụng trong tập lệnh bên ngoài;
  • @parameter1 — danh sách các giá trị của tham số đầu vào, được sử dụng trong tập lệnh bên ngoài;
  • VỚI TẬP HỢP KẾT QUẢ - theo mặc định, tập hợp kết quả được trả về bởi thủ tục sp_execute_external_script được hiển thị với các cột không tên. Để đặt tên cho các cột của tập hợp kết quả, hãy sử dụng câu VỚI BỘ KẾT QUẢ cho lệnh EXECUTE
VÍ DỤ VỀ THỰC HIỆN MÃ PYTHON TRONG SQL SERVER

Hãy chạy một số ví dụ

Ví dụ 1 — Xuất kết quả thành đầu ra dữ liệu tiêu chuẩn

Trong trường hợp này, chúng tôi chỉ cần thực hiện một số tính toán và đưa kết quả vào đầu ra dữ liệu tiêu chuẩn

RECONFIGURE WITH OVERRIDE3
RECONFIGURE WITH OVERRIDE4
RECONFIGURE WITH OVERRIDE5
RECONFIGURE WITH OVERRIDE6
RECONFIGURE WITH OVERRIDE7
RECONFIGURE WITH OVERRIDE8
RECONFIGURE WITH OVERRIDE9
EXEC sp_configure 'external scripts enabled'0

Như bạn có thể thấy, trong tham số ngôn ngữ, chúng tôi đã chỉ định rằng chúng tôi sẽ chạy mã trên Python, sau đó trong tham số tập lệnh, chúng tôi đã tự viết mã, nơi chúng tôi tạo một số biến, thêm giá trị của chúng và tạo thông báo bằng lệnh in

Kết quả là chúng tôi nhận được các thông báo này trong đầu ra tiêu chuẩn của các thông báo, chẳng hạn như thể chúng tôi đã thực thi lệnh in cùng tên trong T-SQL

Ví dụ 2 — Xuất kết quả ở dạng bảng

Hãy làm cho mã Python của chúng ta phức tạp hơn một chút và tạo dữ liệu trên đó theo cách để có được nó ở dạng thông thường của chúng ta, tôi. e. dạng bảng

Đối với điều này, chúng tôi sẽ sử dụng thư viện Pandas và đối tượng Sê-ri, là mảng dữ liệu được lập chỉ mục một chiều

Chúng ta sẽ tạo tập dữ liệu kết quả bằng cách sử dụng lệnh WITH RESULT SETS, hướng dẫn này sẽ giúp chúng ta chỉ định tên cột và kiểu dữ liệu của nó

EXEC sp_configure 'external scripts enabled'1
RECONFIGURE WITH OVERRIDE5
EXEC sp_configure 'external scripts enabled'3
EXEC sp_configure 'external scripts enabled'4
EXEC sp_configure 'external scripts enabled'5
EXEC sp_configure 'external scripts enabled'6
EXEC sp_configure 'external scripts enabled'7
EXEC sp_configure 'external scripts enabled'8

Ví dụ 3 — Chuyển dữ liệu sang mã Python

Ở đây chúng ta sẽ xem xét một ví dụ về truyền dữ liệu, e. g. dữ liệu dạng bảng, nhận được với một truy vấn CHỌN đơn giản cho một thủ tục

Với mục đích này, trước tiên chúng tôi sẽ tạo văn bản của truy vấn và lưu nó vào một biến, để thuận tiện và rõ ràng về mã

Sau đó, chúng tôi sử dụng tham số @input_data_1 để chuyển văn bản truy vấn này vào thủ tục bằng một biến [về nguyên tắc, chúng tôi có thể chỉ định chính văn bản truy vấn]

Sử dụng tham số @input_data_1_name, chúng tôi gọi là tập kết quả của dữ liệu truy vấn mà chúng tôi đã chỉ định trong tham số @input_data_1 sẽ được đặt tên trong mã Python, tôi. e. ở đây chúng tôi chỉ định tên của biến sẽ chứa dữ liệu đến của chúng tôi. Ví dụ, tôi đặt tên biến này là Input_Data, và trong mã chúng ta có thể làm việc với biến này để sử dụng dữ liệu dạng bảng đến

Trong trường hợp này, chúng tôi chỉ chuyển dữ liệu và chúng tôi không làm bất cứ điều gì với nó, chúng tôi chỉ trả lại dữ liệu, đối với tham số OutputDataSet này, chúng tôi đã gán dữ liệu từ biến của mình

Chúng tôi đã hình thành tập dữ liệu cuối cùng, tôi. e. chúng tôi đã chỉ định tên cột và kiểu dữ liệu, đồng thời sử dụng lệnh WITH RESULT SETS

EXEC sp_configure 'external scripts enabled'9
sp_execute_external_script0

sp_execute_external_script1

sp_execute_external_script2
sp_execute_external_script3
sp_execute_external_script4
sp_execute_external_script5

sp_execute_external_script6
RECONFIGURE WITH OVERRIDE5
sp_execute_external_script8
sp_execute_external_script9
@language = N'language',0
EXEC sp_configure 'external scripts enabled'6
@language = N'language',2
@language = N'language',3
@language = N'language',4

Ở đây chúng tôi cùng bạn xem các nguyên tắc cơ bản khi làm việc với Python trong Microsoft SQL Server, chúng tôi đã học cách kích hoạt khả năng làm việc với Python, cách chạy mã, cách sử dụng dữ liệu đến và cách nhận kết quả trong

Bạn có thể kết hợp SQL và Python không?

Từ SQL đến Python . SQL results are instantly saved as Python DataFrames, so you can query your database in SQL, and then use Python to export your data as a CSV or create complex Machine Learning models.

Tôi có thể gọi tập lệnh Python từ SQL không?

Vì trình thông dịch Python được gọi bằng trình bao dòng lệnh nên trình thông dịch này có thể thực thi bất kỳ lệnh Python nào từ Máy chủ SQL bằng cách sử dụng thủ tục mở rộng tích hợp xp_cmdshell.

Chủ Đề