Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2016 (13.x)
SQL Server 2017 (14.x)
SQL Server 2019 (15.x) Linux rendszeren
A Python-integráció az SQL Server 2017-ben és újabb verzióiban érhető el, ha a Python lehetőséget a Machine Learning Services (In-Database) telepítésében is használja.
Megjegyzés:
Ez a cikk jelenleg csak linuxos SQL Server 2016 (13.x), SQL Server 2017 (14.x), SQL Server 2019 (15.x) és SQL Server 2019 (15.x) rendszerre vonatkozik.
Ha Python-megoldásokat szeretne fejleszteni és üzembe helyezni az SQL Serverhez, telepítse a Microsoft revoscalepy - és más Python-kódtárait a fejlesztői munkaállomáson. A távoli SQL Server-példányon is található revoscalepy-kódtár koordinálja a számítási kéréseket mindkét rendszer között.
Ebből a cikkből megtudhatja, hogyan konfigurálhat Egy Python fejlesztői munkaállomást, hogy a gépi tanuláshoz és Python-integrációhoz engedélyezett távoli SQL Serverrel kommunikálhasson. A cikk lépéseinek elvégzése után ugyanazok a Python-kódtárak lesznek, mint az SQL Serveren. Azt is tudni fogja, hogyan küldhet le számításokat egy helyi Python-munkamenetből egy távoli Python-munkamenetbe az SQL Serveren.
A telepítés ellenőrzéséhez használhatja a cikkben ismertetett beépített Jupyter-jegyzetfüzeteket, vagy csatolhatja a kódtárakat a PyCharmhoz vagy bármely más, általában használt IDE-hez.
Jótanács
A gyakorlatok videobemutatóját az R és a Python távoli futtatása az SQL Serveren a Jupyter Notebooksból című témakörben tekinti meg.
Gyakran használt eszközök
Akár az SQL-hez új Python-fejlesztő, akár a Pythonhoz és az adatbázis-elemzéshez új SQL-fejlesztő, szüksége lesz egy Python-fejlesztőeszközre és egy T-SQL-lekérdezésszerkesztőre, például az SQL Server Management Studióra (SSMS) az adatbázison belüli elemzés összes funkciójának gyakorlásához.
Python-fejlesztéshez használhatja a Jupyter Notebookokat, amelyek az SQL Server által telepített Anaconda-disztribúcióban vannak csomagolva. Ez a cikk bemutatja, hogyan indíthatja el a Jupyter Notebookokat, hogy a Python-kódot helyileg és távolról is futtathassa az SQL Serveren.
Az SSMS egy külön letöltés, amely hasznos tárolt eljárások létrehozására és futtatására az SQL Serveren, beleértve a Python-kódot tartalmazó eljárásokat is. A Jupyter Notebookokban írt szinte minden Python-kód beágyazható egy tárolt eljárásba. Az SSMS-sel és a beágyazott Pythonnal kapcsolatos további rövid útmutatók segítségével megismerheti az SSMS-t és a beágyazott Pythont.
1 – Python-csomagok telepítése
A helyi munkaállomásoknak ugyanolyan Python-csomagverziókkal kell rendelkezniük, mint az SQL Serveren, beleértve az alap Anaconda 4.2.0-s verzióját Python 3.5.2-es disztribúcióval és Microsoft-specifikus csomagokat.
A telepítési szkript három Microsoft-specifikus kódtárat ad hozzá a Python-ügyfélhez. A szkript a következőket telepíti:
- A revoscalepy az adatforrás-objektumok és a számítási környezet meghatározására szolgál.
- a microsoftml gépi tanulási algoritmusokat biztosít.
- Az azureml az önálló kiszolgálókörnyezethez társított üzemeltetési feladatokra vonatkozik, és az adatbázison belüli elemzésekhez korlátozottan használható.
Töltse le a telepítési szkriptet. A megfelelő GitHub-oldalon válassza a Nyers fájl letöltése lehetőséget.
https://aka.ms/mls-py telepíti a Microsoft Python-csomagok 9.2.1-es verzióját. Ez a verzió egy alapértelmezett SQL Server-példánynak felel meg.
https://aka.ms/mls93-py telepíti a Microsoft Python-csomagok 9.3-at.
Nyisson meg egy Emelt szintű rendszergazdai engedélyekkel rendelkező PowerShell-ablakot (kattintson a jobb gombbal a Futtatás rendszergazdaként elemre).
Nyissa meg azt a mappát, amelyben letöltötte a telepítőt, és futtassa a szkriptet. Adja hozzá a
-InstallFolderparancssori argumentumot a tárak mappahelyének megadásához. Például:cd {{download-directory}} .\Install-PyForMLS.ps1 -InstallFolder "C:\path-to-python-for-mls"
Ha kihagyja a telepítési mappát, az alapértelmezett érték a következő %ProgramFiles%\Microsoft\PyForMLS.
A telepítés némi időt vesz igénybe. A PowerShell-ablakban figyelheti az előrehaladást. Ha a telepítés befejeződött, teljes csomagkészlettel rendelkezik.
Jótanács
Javasoljuk a Python for Windows GYIK-ot, amely általános információkat nyújt a Python-programok Windows rendszeren való futtatásáról.
2 – Végrehajtható fájlok megkeresése
A PowerShellben is listázhatja a telepítési mappa tartalmát, hogy meggyőződjön arról, hogy a Python.exe, szkriptek és egyéb csomagok telepítve vannak.
Lépjen
cd \a gyökérmeghajtóra, majd adja meg az előző lépésben megadott-InstallFolderelérési utat. Ha a telepítés során kihagyta ezt a paramétert, az alapértelmezett érték a következőcd %ProgramFiles%\Microsoft\PyForMLS.Adja meg
dir *.exea végrehajtható elemek listáját. Látnia kell python.exe, pythonw.exeés uninstall-anaconda.exe.
A Python több verziójával rendelkező rendszereken ne felejtse el használni ezt a Python.exe, ha revoscalepy-t és más Microsoft-csomagokat szeretne betölteni.
Megjegyzés:
A telepítési szkript nem módosítja a PATH környezeti változót a számítógépen, ami azt jelenti, hogy az újonnan telepített Python-értelmező és modulok nem érhetők el automatikusan más eszközök számára. Ha segítségre van szüksége a Python-értelmező és a kódtár eszközökhöz való összekapcsolásához, olvassa el az IDE telepítése című témakört.
3 – Jupyter-jegyzetfüzetek megnyitása
Az Anaconda jupyter notebookokat is tartalmaz. Következő lépésként hozzon létre egy jegyzetfüzetet, és futtasson néhány Python-kódot az imént telepített kódtárakat tartalmazóan.
A PowerShell parancssorában, még a könyvtárban, nyissa meg a
%ProgramFiles%\Microsoft\PyForMLSJupyter Notebooks fájlt a Szkriptek mappából:.\Scripts\jupyter-notebookA jegyzetfüzetnek meg kell nyílnia az alapértelmezett böngészőben a következő helyen
https://localhost:8889/tree: .A kezdés másik módja, ha duplán kattint jupyter-notebook.exe.
Válassza az Új , majd a Python 3 lehetőséget.
Adja meg
import revoscalepyés futtassa a parancsot az egyik Microsoft-specifikus kódtár betöltéséhez.Írja be és futtassa
print(revoscalepy.__version__)a verzióinformáció megjelenítéséhez. A 9.2.1-nek vagy a 9.3.0-nak kell megjelennie. Ezen verziók bármelyikét használhatja revoscalepy-val a kiszolgálón.Adjon meg egy összetettebb utasítássorozatot. Ez a példa egy helyi adatkészleten rx_summary használatával generál összefoglaló statisztikákat. Más függvények lekérik a mintaadatok helyét, és létrehoznak egy adatforrás-objektumot egy helyi .xdf-fájlhoz.
import os from revoscalepy import rx_summary from revoscalepy import RxXdfData from revoscalepy import RxOptions sample_data_path = RxOptions.get_option("sampleDataDir") print(sample_data_path) ds = RxXdfData(os.path.join(sample_data_path, "AirlineDemoSmall.xdf")) summary = rx_summary("ArrDelay+DayOfWeek", ds) print(summary)
Az alábbi képernyőképen a bemenet és a kimenet egy része látható, a rövidség kedvéért levágva.
4 – SQL-engedélyek lekérése
Ha szkriptek futtatásához és adatok feltöltéséhez szeretne csatlakozni egy SQL Server-példányhoz, érvényes bejelentkezéssel kell rendelkeznie az adatbázis-kiszolgálón. SQL-bejelentkezést vagy integrált Windows-hitelesítést is használhat. Általában azt javasoljuk, hogy windowsos integrált hitelesítést használjon, de az SQL-bejelentkezés használata bizonyos esetekben egyszerűbb, különösen akkor, ha a szkript kapcsolati sztringeket tartalmaz a külső adatokhoz.
A kód futtatásához használt fióknak legalább engedéllyel kell rendelkeznie a használt adatbázisokból való olvasáshoz, valamint a külső szkriptek végrehajtására vonatkozó speciális engedéllyel. A legtöbb fejlesztőnek szüksége van arra is, hogy tárolt eljárásokat hozzon létre, és adatokat írjon betanítási adatokat vagy pontozott adatokat tartalmazó táblákba.
Kérje meg az adatbázis rendszergazdáját , hogy konfigurálja a következő engedélyeket a fiókjához abban az adatbázisban, ahol a Pythont használja:
- FUTTASSON BÁRMILYEN KÜLSŐ SZKRIPTET a Python kiszolgálón való futtatásához.
- db_datareader jogosultságokat a modell betanításához használt lekérdezések futtatásához.
- db_datawriter betanítási vagy pontozott adatok írásához.
- db_owner objektumokat, például tárolt eljárásokat, táblákat, függvényeket hozhat létre. Mintaadatbázisok létrehozásához és teszteléséhez db_owner is szükség van.
Ha a kódhoz olyan csomagokra van szükség, amelyek alapértelmezés szerint nincsenek telepítve az SQL Serverrel, kérje meg az adatbázis-rendszergazdát, hogy telepítse a csomagokat a példányra. Az SQL Server biztonságos környezet, és korlátozások vonatkoznak a csomagok telepítésének helyére. A csomagok a kód részeként történő alkalmi telepítése nem ajánlott, még akkor sem, ha rendelkezik jogosultságokkal. Emellett mindig alaposan vegye figyelembe a biztonsági következményeket, mielőtt új csomagokat telepítene a kiszolgálótárba.
5 – Tesztadatok létrehozása
Ha rendelkezik engedéllyel adatbázis létrehozásához a távoli kiszolgálón, az alábbi kód futtatásával létrehozhatja a jelen cikk további lépéseihez használt Írisz demo adatbázist.
5–1 – Az irissql-adatbázis távoli létrehozása
import pyodbc
# creating a new db to load Iris sample in
new_db_name = "irissql"
connection_string = "Driver=SQL Server;Server=localhost;Database={0};Trusted_Connection=Yes;"
# you can also swap Trusted_Connection for UID={your username};PWD={your password}
cnxn = pyodbc.connect(connection_string.format("master"), autocommit=True)
cnxn.cursor().execute("IF EXISTS(SELECT * FROM sys.databases WHERE [name] = '{0}') DROP DATABASE {0}".format(new_db_name))
cnxn.cursor().execute("CREATE DATABASE " + new_db_name)
cnxn.close()
print("Database created")
5-2 – Íriszminta importálása az SkLearnből
from sklearn import datasets
import pandas as pd
# SkLearn has the Iris sample dataset built in to the package
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
5–3 – Revoscalepy API-k használata tábla létrehozásához és az Írisz-adatok betöltéséhez
from revoscalepy import RxSqlServerData, rx_data_step
# Example of using RX APIs to load data into SQL table. You can also do this with pyodbc
table_ref = RxSqlServerData(connection_string=connection_string.format(new_db_name), table="iris_data")
rx_data_step(input_data = df, output_file = table_ref, overwrite = True)
print("New Table Created: Iris")
print("Sklearn Iris sample loaded into Iris table")
6 – Távoli kapcsolat tesztelése
A következő lépés kipróbálása előtt győződjön meg arról, hogy rendelkezik engedélyekkel az SQL Server-példányhoz és egy kapcsolati sztringhez az Írisz-mintaadatbázishoz. Ha az adatbázis nem létezik, és rendelkezik megfelelő engedélyekkel, az alábbi beágyazott utasítások segítségével hozhat létre adatbázist.
Cserélje le a kapcsolati sztringet érvényes értékekre. A mintakód a "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;" -t használja, de a kódnak meg kell adnia egy távoli szervert, esetleg egy példánynévvel és olyan hitelesítő opcióval, amely az adatbázisbejelentkezéshez van hozzárendelve.
6–1 Függvény definiálása
Az alábbi kód egy függvényt határoz meg, amelyet egy későbbi lépésben fog elküldeni az SQL Servernek. A végrehajtás során a távoli kiszolgálón lévő adatok és kódtárak (revoscalepy, pandas, matplotlib) használatával hozza létre az írisz adatkészlet pontdiagramjait. Visszaadja a .png bájtfolyamát a Jupyter Notebooksnak, hogy megjelenítse a böngészőben.
def send_this_func_to_sql():
from revoscalepy import RxSqlServerData, rx_import
from pandas.tools.plotting import scatter_matrix
import matplotlib.pyplot as plt
import io
# remember the scope of the variables in this func are within our SQL Server Python Runtime
connection_string = "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;"
# specify a query and load into pandas dataframe df
sql_query = RxSqlServerData(connection_string=connection_string, sql_query = "select * from iris_data")
df = rx_import(sql_query)
scatter_matrix(df)
# return bytestream of image created by scatter_matrix
buf = io.BytesIO()
plt.savefig(buf, format="png")
buf.seek(0)
return buf.getvalue()
6–2 A függvény elküldése az SQL Serverre
Ebben a példában hozza létre a távoli számítási környezetet, majd küldje el a függvény végrehajtását az SQL Servernek rx_exec. A rx_exec függvény azért hasznos, mert argumentumként elfogad egy számítási környezetet. Minden olyan függvénynek, amelyet távolról szeretne végrehajtani, rendelkeznie kell egy számítási környezet argumentumának. Egyes függvények, például rx_lin_mod közvetlenül támogatják ezt az argumentumot. Olyan műveletek esetén, amelyek nem, a rx_exec használatával távoli számítási környezetben kézbesítheti a kódot.
Ebben a példában nem kellett nyers adatokat továbbítani az SQL Serverről a Jupyter Notebookba. Minden számítás az Írisz-adatbázisban történik, és csak a képfájl lesz visszaadva az ügyfélnek.
from IPython import display
import matplotlib.pyplot as plt
from revoscalepy import RxInSqlServer, rx_exec
# create a remote compute context with connection to SQL Server
sql_compute_context = RxInSqlServer(connection_string=connection_string.format(new_db_name))
# use rx_exec to send the function execution to SQL Server
image = rx_exec(send_this_func_to_sql, compute_context=sql_compute_context)[0]
# only an image was returned to my jupyter client. All data remained secure and was manipulated in my db.
display.Image(data=image)
Az alábbi képernyőképen a bemeneti adatok és a pontdiagram ábra eredménye látható.
7 – Python indítása eszközökről
Mivel a fejlesztők gyakran dolgoznak a Python több verziójával, a telepítő nem adja hozzá a Pythont a PATH-hoz. A telepítő által telepített Python-végrehajtható állomány és kódtárak használatához csatlakoztassa az IDE-t a Python.exe útvonalához, amely revoscalepy-t és microsoftml-t is biztosít.
Parancssor
Ha Python.exe%ProgramFiles%\Microsoft\PyForMLS futtat (vagy bármilyen helyről, amelyet a Python-ügyfélkódtár telepítéséhez megadott), hozzáférhet a teljes Anaconda-disztribúcióhoz, valamint a Microsoft Python-modulokhoz, a revoscalepy-hoz és a microsoftml-hez.
- Nyissa meg
%ProgramFiles%\Microsoft\PyForMLSés hajtsa végre Python.exe. - Interaktív súgó megnyitása:
help(). - Írja be a modul nevét a parancssorba:
help> revoscalepy. A súgó visszaadja a nevet, a csomag tartalmát, a verziót és a fájl helyét. - Adja vissza a verzió- és csomaginformációkat a súgóban> :
revoscalepy. Nyomja le többször az Enter billentyűt a súgóból való kilépéshez. - Modul importálása:
import revoscalepy.
Jupyter notebookok
Ez a cikk a beépített Jupyter Notebookok használatával mutatja be a függvényhívásokat a revoscalepy felé. Ha még nem használja ezt az eszközt, az alábbi képernyőkép bemutatja, hogyan illeszkednek egymáshoz a darabok, és miért "csak működik".
A szülőmappa %ProgramFiles%\Microsoft\PyForMLS az Anacondát és a Microsoft-csomagokat tartalmazza. A Jupyter-jegyzetfüzetek az Anacondában, a Szkriptek mappában találhatók, a Python-végrehajtható elemek pedig automatikusan regisztrálva lesznek a Jupyter Notebookokkal. A webhelycsomagok alatt található csomagok importálhatók egy jegyzetfüzetbe, beleértve az adatelemzéshez és a gépi tanuláshoz használt három Microsoft-csomagot is.
Ha egy másik IDE-t használ, csatlakoztatnia kell a Python-végrehajtható fájlokat és függvénytárakat az eszközhöz. A következő szakaszok útmutatást nyújtanak a gyakran használt eszközökhöz.
Visual Studio
Ha Pythonnal rendelkezik a Visual Studióban, az alábbi konfigurációs beállítások segítségével hozzon létre egy Olyan Python-környezetet, amely tartalmazza a Microsoft Python-csomagokat.
| Konfigurációs beállítás | value |
|---|---|
| Előtag útvonal | %ProgramFiles%\Microsoft\PyForMLS |
| Értelmező elérési útja | %ProgramFiles%\Microsoft\PyForMLS\python.exe |
| Ablakos felületű értelmező | %ProgramFiles%\Microsoft\PyForMLS\pythonw.exe |
A Python-környezetek konfigurálásával kapcsolatos segítségért lásd: Python-környezetek kezelése a Visual Studióban.
PyCharm
A PyCharmban állítsa az értelmezőt a telepített Python-végrehajthatóra.
Új projektben a Beállítások területen válassza a Helyi hozzáadása lehetőséget.
Adja meg a
%ProgramFiles%\Microsoft\PyForMLS\.
Most már importálhat revoscalepy-, microsoftml- vagy azureml-modulokat . Az Eszközök>Python-konzolt is választhatja egy interaktív ablak megnyitásához.