In diesem Dokument wird beschrieben, wie Sie die SQL ** Server ** -Datenbank mit ** Alibaba Cloud Function Compute ** verwenden und ** Function Compute ** basierend auf fc-docker konfigurieren und validieren.
Verwenden Sie Docker, um SQL Server 2017 auf Ihrem lokalen Mac-Computer auszuführen, die Tabellenstruktur zu initialisieren, eine Testdatei mit dem Namen index.py zu erstellen und zu prüfen, ob Sie auf die Datenbank zugreifen können.
$ docker pull mcr.microsoft.com/mssql/server:2017-latest
$ docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Codelife.me' \
-p 1433:1433 --name sql1 \
-d mcr.microsoft.com/mssql/server:2017-latest
Starten Sie SQL Server über Port 1433 und setzen Sie das Kennwort für das SA-Konto auf "Codelife.me".
$ brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
$ brew update
$ ACCEPT_EULA=y brew install --no-sandbox msodbcsql mssql-tools
Verwenden Sie Homebrew, um den MSSQL-Client SQLCMD zu installieren.
$ sqlcmd -S localhost -U SA -P 'Codelife.me'
1>CREATE DATABASE TestDB
2>SELECT Name from sys.Databases
3>GO
Name
-----------------------------------------------
master
tempdb
model
msdb
TestDB
(5 rows affected)
Erstellen Sie eine Testdatenbank mit dem Namen TestDB.
1> USE TestDB
2> CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
3> INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
4> GO
Changed database context to 'TestDB'.
(1 rows affected)
(1 rows affected)
Erstellen Sie eine Tabelle mit dem Namen Inventar und fügen Sie eine Zeile mit Testdaten ein.
1> SELECT * FROM Inventory WHERE quantity > 152;
2> GO
id name quantity
----------- -------------------------------------------------- -----------
2 orange 154
(1 rows affected)
1> QUIT
Bestätigen Sie, dass die Daten erfolgreich eingefügt wurden, und beenden Sie das Programm.
import pymssql
def handler(event, context):
conn = pymssql.connect(
host=r'docker.for.mac.host.internal',
user=r'SA',
password=r'Codelife.me',
database='TestDB'
)
cursor = conn.cursor()
cursor.execute('SELECT * FROM inventory WHERE quantity > 152')
result = ''
for row in cursor:
result += 'row = %r\n' % (row,)
conn.close()
return result
Entwickeln Sie eine Testfunktion mit dem Namen index.py. Diese Funktion stellt eine Verbindung zum SQL Server unter "docker.for.mac.host.internal" auf dem Mac-Host her, aber fc-docker führt die Funktion im Container aus und stellt keine Verbindung zu localhost her. Anschließend wird die Abfrageanweisung ausgeführt und das Ergebnis zurückgegeben.
Erstellen Sie ein leeres Verzeichnis und platzieren Sie die Datei index.py darin. Wechseln Sie den aktuellen Pfad der Befehlssitzung in das Verzeichnis, in dem sich index.py befindet. Führen Sie dann den folgenden Befehl aus.
$ docker run --rm --name mssql-builder -t -d -v $(pwd):/code --entrypoint /bin/sh aliyunfc/runtime-python3.6
$ docker exec -t mssql-builder pip install -t /code pymssql
$ docker stop mssql-builder
$ docker run --rm -v $(pwd):/code aliyunfc/runtime-python3.6 --handler index.handler
row = (2, 'orange', 154)
RequestId: d66496e9-4056-492b-98d9-5bf51e448174 Billed Duration: 144 ms Memory Size: 19
Führen Sie den obigen Befehl aus. Das Installationsergebnis wird zurückgegeben. Wenn Sie keine frühere Version von pymssql verwenden müssen, ignorieren Sie die folgenden Abschnitte.
Bei Versionen von pymssql vor 2.1.3 wird durch Ausführen des Befehls pip install pymssql kompiliert und aus dem Quellcode installiert. Installieren Sie in diesem Fall den kompilierungsabhängigen freetds-dev und den laufzeitabhängigen libsybdb5. Kompilierungsabhängigkeiten können direkt im Systemverzeichnis installiert werden, Ausführungsabhängigkeiten müssen jedoch im lokalen Verzeichnis installiert werden.
docker run --rm --name mssql-builder -t -d -v $(pwd):/code --entrypoint /bin/sh aliyunfc/runtime-python3.6
docker exec -t mssql-builder apt-get install -y -d -o=dir::cache=/code libsybdb5
docker exec -t mssql-builder bash -c 'for f in $(ls /code/archives/*.deb); do dpkg -x $f $(pwd) ; done;'
docker exec -t mssql-builder bash -c "rm -rf /code/archives/; mkdir /code/lib;cd /code/lib; ln -sf ../usr/lib/x86_64-linux-gnu/libsybdb.so.5 ."
docker exec -t mssql-builder apt-get install -y freetds-dev
docker exec -t mssql-builder pip install cython
docker exec -t mssql-builder pip install -t /code pymssql==2.1.3
docker stop mssql-builder
Starten Sie den Container in der 1. und 1. Spalte, stoppen Sie den Container in der 10. Spalte und löschen Sie ihn automatisch. Die Zeilen 2, 2 und 3 werden verwendet, um die laufzeitabhängige libsybdb5 in einem lokalen Verzeichnis zu installieren. 3. Verknüpfen Sie die DLL libsybdb.so.5 mit dem Verzeichnis / code / lib, das standardmäßig zu LD_LIBRARY_PATH hinzugefügt wird. 4. Installieren Sie freetds-dev und cython im Systemverzeichnis und kompilieren und installieren Sie pymssql. Keine der Bibliotheken wird benötigt, wenn Sie pymssql ausführen, sodass Sie sie nicht in Ihrem lokalen Verzeichnis installieren müssen. 5. Installieren Sie pymssql 2.1.3. Ab pymssql 2.1.4 wird der Quellcode während der Installation nicht mehr benötigt.
$ docker run --rm -v $(pwd):/code aliyunfc/runtime-python3.6 --handler index.handler
row = (2, 'orange', 154)
RequestId: d66496e9-4056-492b-98d9-5bf51e448174 Billed Duration: 144 ms Memory Size: 19
Die Prüfung ist bestanden.
In diesem Dokument wird die Verwendung der SQL Server-Datenbank (https://www.alibabacloud.com/de/product/apsaradb-for-rds-sql-server) mit Alibaba Cloud Function Compute beschrieben. Sie benötigen den Quellcode nicht mehr, um die neueste Version von pymssql zu installieren. Die Methode zum Installieren von pymssql aus einem Quellcodepaket mit pip kann jedoch auf ähnliche Szenarien angewendet werden.
In diesem Dokument wird auch beschrieben, wie Sie Function Compute basierend auf fc-docker konfigurieren und validieren. Verschiedene Dateien von fcli sbox und fc-docker können als Skripte entwickelt und wiederholt ausgeführt werden, und fc-docker kann in der simulierten lokalen Laufzeitumgebung ausgeführt werden. Beide Funktionen sind in CI-Szenarien (Continuous Integration) sehr nützlich.
1、https://pymssql.readthedocs.io/en/latest/intro.html#install 2、http://www.freetds.org/ 3、https://pymssql.readthedocs.io/en/latest/pymssql_examples.html 4、https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-2017 5、https://cloudblogs.microsoft.com/sqlserver/2017/05/16/sql-server-command-line-tools-for-macos-released/
Recommended Posts