はじめに
Raspbian上で動かすPython3のスクリプトから、別のサーバのSQLServerに対しデータを書き込む方法について。(Python2.7と違って、apt-getでpymssqlのパッケージが入れられなかったので、そのインストール手順の覚え書きです)
環境
- Raspbian(2018-11-13-raspbian-stretch-lite)
- Python3
SQLServer用のライブラリ「pymssql」をインストール
pipを使用するので、インストールしていなければ下記を実行
$ sudo apt-get install python3-pip
pymssqlのコンパイルに必要なライブラリをインストール
$ sudo apt-get install freetds-dev -y
(補足)FreeTDS-devを入れ忘れると・・・
コンパイル中に下記のエラーが出ます
... creating build/temp.linux-armv6l-3.5/src arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fdebug-prefix-map=/build/python3.5-6waWnr/python3.5-3.5.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/local/include -I/usr/include/python3.5m -c src/_mssql.c -o build/temp.linux-armv6l-3.5/src/_mssql.o -DMSDBLIB src/_mssql.c:594:22: fatal error: sqlfront.h: No such file or directory #include "sqlfront.h" ^ compilation terminated. error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1 ---------------------------------------- Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-zgxb1qiz/pymssql/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-_78s2jjv-record/install-record.txt --single-version-externally-managed --compile --user --prefix=" failed with error code 1 in /tmp/pip-build-zgxb1qiz/pymssql/
pipからpymssqlをインストール
インストールを完了するのに、RaspberryPi3で15分程度、RaspberryPiZeroWで1時間弱掛かります。
$ pip3 install pymssql Collecting pymssql Downloading https://files.pythonhosted.org/packages/2e/81/99562b93d75f3fc5956fa65decfb35b38a4ee97cf93c1d0d3cb799fffb99/pymssql-2.1.4.tar.gz (691kB) 100% |????????????????????????????????| 696kB 97kB/s Building wheels for collected packages: pymssql Running setup.py bdist_wheel for pymssql ... done Stored in directory: /home/pi/.cache/pip/wheels/21/35/92/911576b44bbe7c19ff65d0f90a4af9a9571db4af36ffd3ede1 Successfully built pymssql Installing collected packages: pymssql Successfully installed pymssql-2.1.4
pymssqlの動作チェック
テーブルにレコードをf追加する簡単なスクリプトでテストします。
SqlServerのテーブルを作成
create table T_LogTest( DateAppend datetime, ClientID NVARCHAR(255), Value0 smallint, Value1 smallint, Value2 smallint);
書き込みスクリプト
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from os import getenv import pymssql conn = pymssql.connect('<host name>', '<database name>', '<user name>', '<password>') cursor = conn.cursor() cursor.execute(""" INSERT INTO T_LogTest ( DateAppend , ClientID , Value0 , Value1 , Value2) VALUES ( GETDATE(), 'hoge', 2000, 2010, 2020) """) conn.commit() conn.close()
参考資料
pymssql examples — pymssql 2.1.4 documentation
https://python.keicode.com/advanced/pymssql.php
SQL Serverでログインユーザーのパスワードを変更する | SQLServer初心者でもスッキリわかる
pymssqlをインストール - Qiita
Pythonの環境構築とDBへのSQL実行例のメモ2019 - Qiita
ステップ 3: pymssql を使用した SQL への接続を概念実証する - SQL Server | Microsoft Docs
pymssql による MS SQL Server の利用 - Python 入門