[SQL Server玩轉Python] 一.安裝環境及T-SQL呼叫python指令碼
在開發專案過程中,更多的是通過Python訪問SQL Server資料庫介面,進行資料探勘的操作;而SQL Server2016版本之後,嵌入了強大的R、Python、Machine Learning等功能,尤其是Python程式碼置於儲存過程中,可以實現一些便捷資料分析功能。
本系列文章主要講解SQL Server 2017實現Python資料分析的文章,同時對比兩者的優劣。第一篇文章主要講解SQL Server開發Python環境的安裝過程及基本的資料分析程式碼實現。基礎性文章,自己也在不斷學習中,希望對你有所幫助。
一. 安裝SQL Server
(一) 安裝SQL Server 2017
本文安裝的軟體為:cn_sql_server_2017_developer_x64_dvd_11296175.iso
下載地址:
1.選擇“全新 SQL Server 獨立安裝或向現有安裝新增功能”。
2.安裝所需功能,注意機器學習服務、R、Python均需要安裝。
3.選擇預設例項“MSSQLSERVER”。
4.選擇混合性模型,包括SQL Server身份驗證(sa)和Windows身份驗證,同時添加當前使用者。
5.安裝。
安裝成功之後,你會發現仍然不能編寫SQL Server程式碼,這是因為還需要安裝SQL Server管理工具。
(二) 安裝SQL Server Management Studio
微軟官方下載地址:https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017
作者上傳下載地址:
安裝過程如下圖所示。
安裝成功之後即可使用SQL Server編寫程式碼了。
二. 配置Python和R開發環境
安裝成功之後我們新建一個數據庫test01,可以發現SQL語句可以編寫,但編寫Python或R程式碼仍然會報錯。
推薦文章:
解決方法:
http://www.cnblogs.com/OpenCoder/p/7090370.html
http://www.kodyaz.com/t-sql/enable-external-script-on-sql-server-for-r-python.aspx
1.檢視Python是否已經啟用,檢視SQL Server環境下是否有Python可執行檔案。如:C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES。
注意,Scripts資料夾下可以通過pip安裝其他Python庫。
2.檢查是否已啟用外部指令,程式碼如下:
--檢視外部指令
sp_configure 'external scripts enabled'
--啟用外部指令碼,設定config_value為1
EXEC sp_configure 'external scripts enabled', 1
RECONFIGURE WITH OVERRIDE
如果run_value為1,則機器學習功能已經安裝成功並且可供使用。否則設定config_value為1。
3.此時如果執行Python程式碼,可能會提示錯誤“此 SQL Server 例項已禁用 sp_execute_external_script,請使用 sp_configure 的已啟用的外部指令碼對其進行啟用。” 這表示run_value仍然為0,此時需要開啟服務。開啟方法如下:
1) 開啟SQL Server例項資料庫引擎服務
2) 開啟SQL Server例項Lanuchpad服務
注意執行完後要重啟資料庫引擎服務和SQL Server Lanuchpad服務才會正式生效:
4.重啟電腦和資料庫引擎服務。
5.新增最簡單的Python和R語言程式碼,並執行。
Pyhton程式碼
EXEC sp_execute_external_script @language = N'Python',
@script = N'print(3+4)'
執行結果如下:
R程式碼
exec sp_execute_external_script @language =N'R',
@script=N'OutputDataSet<-InputDataSet',
@input_data_1 =N'select 1 as hello'
with result sets (([hello] int not null));
go
執行結果如下:
三. T-SQL呼叫Python資料分析入門
指令碼語言的基本語法如下,推薦官方文章 sp_execute_external_script (TRANSACT-SQL) 。
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 ]
[ , @params = N'@parameter_name data_type [ OUT | OUTPUT ] [ ,...n ]' ]
[ , @parameter1 = 'value1' [ OUT | OUTPUT ] [ ,...n ] ]
推薦這篇文章供大家學習基礎知識:使用 T-SQL 執行 Python
1.程式一 呼叫包
execute sp_execute_external_script
@language = N'Python',
@script = N'
import math
a = 1
b = 2
c = a*b
print(a,b,c)
d = math.pi/6
print(math.sin(d))
'
輸出結果如下所示:
2.程式二 迴歸預測
execute sp_execute_external_script
@language = N'Python',
@script = N'
from sklearn import linear_model
import matplotlib.pyplot as plt
import numpy as np
#X表示匹薩尺寸 Y表示匹薩價格
X = [[6], [8], [10], [14], [18]]
Y = [[7], [9], [13], [17.5], [18]]
print(X)
print(Y)
#迴歸訓練
clf = linear_model.LinearRegression()
clf.fit(X, Y)
res = clf.predict(np.array([12]).reshape(-1, 1))[0]
print(u"預測一張12英寸匹薩價格:$%.2f" % res)
#預測結果
X2 = [[0], [10], [14], [25]]
Y2 = clf.predict(X2)
'
輸出結果可以看到線性迴歸預測的價格。
後續文章將結合儲存過程詳細講解SQL Server玩轉Python的過程,比如這篇文章。
https://docs.microsoft.com/zh-cn/sql/advanced-analytics/tutorials/sqldev-py5-train-and-save-a-model-using-t-sql?view=sql-server-2017
希望文章對大家有所幫助,如果有錯誤或不足之處,還請海涵。最近經歷的事情太多,有喜有悲,關閉了朋友圈,希望通過不斷學習和寫文章來忘記煩勞,將憂鬱轉換為動力,每週學習都記錄下來。
(By:Eastmount 2018-11-12 晚上12點 https://blog.csdn.net/Eastmount/)