152_Python2 connect to MySQL(sakuravps)

Python2からMySQL(sakuravps)への接続。これも少し苦労しました。

結果、MySQLDBはダメで、connectorを使いました。

ーーーーーーーーーーーーーーーーー

rootのパスワード設定
sudo passwd root

pipのインストール
sudo pip install -U pip

pipのアップデート
sudo pip install -U pip

/etc/sudoersを編集
sudo nano /etc/sudoers

でも、MySQLdbは失敗、、、failed………….
i got below error msg.
pi@raspberrypi-20161228:~ $ python 20170104_pytosql.py
Traceback (most recent call last):
File “20170104_pytosql.py”, line 3, in <module>
import MySQLdb
ImportError: No module named MySQLdb

pi@raspberrypi-20161228:~ $ python3 20170104_pytosql.py
Traceback (most recent call last):
File “20170104_pytosql.py”, line 3, in <module>
import MySQLdb
ImportError: No module named ‘MySQLdb’
=================
気を取り直して、DLより再度トライ!(2017/01/05)

wget command
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/230995/?ST=spleaf

Webサーバーからファイルをダウンロードする
$ wget http://www.xxxxx.co.jp/file.tar.gz

$ wget https://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz
DL is OK!
tar command
https://hydrocul.github.io/wiki/commands/tar.html
## 解凍して展開
$ tar xvzf tgzファイル名

$ tar xvzf MySQL-python-1.2.3.tar.gz
expand is ok!
$ pip3 install mysql-python

でも、エラー!!! 、、、but error !
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-76opifo_/mysql-python
Storing debug log for failure in /home/pi/.pip/pip.log

No module named ‘MySQLdb’ 解決で検索するが、、、、

pip install –user https://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-1.1.6.tar.gz
pip install –user https://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-1.2.3.tar.gz

PyMySQLに浮気してトライするが、、、、
pip3 install PyMySQL

失敗、、、、NG!!!!!

実行する度に対処?をやってみるが、、、、、
$ PYTHONPATH=/path/to/dir python 20170104_pytosql.py

失敗、、、、NG!!!!!

インポートする側のソースファイルで対処
インポートする側のソース(main.py)の先頭に下記を書き足す。
import sys
sys.path.append(‘/path/to/dir’)

失敗、、、、NG!!!!!
$ cd MySQL-python-1.2.3

$ python setup.py build

$ python setup.py install

$ vi 20170104_pytosql.py

import /home/pi/MySQL-python-1.2.3/MySQLdb

====================

$ pip install mysql-connector-python
is OK!!

ライブラリのインストール
$ sudo apt-get install python-pip
$ sudo pip install MySQL-python

エラーになる場合は、以下のパッケージが足りないことが多い為、追加でインストールします。

$ sudo apt-get install python-dev

$ sudo apt-get install libmysqlclient-dev

失敗、、、、NG!!!!!

 

+++++++++++++++++++++++++++++++++++

mysql-connector-pythonに変えてみる(これでなんとか成功!!)2017/01/07

インストール
$ pip install mysql-connector-python
host=”160.**.**.*87″
db=”2016*******nsor”
user=”r****ai”
passwd=”******”
charset=”utf8″

cursor.execute(‘insert into t_sensor (time_stamp,temp,humid,water_need,memo) values (%s, %s, %s, %s, %s)’, (‘20170107′,’50’,’50’,’test_from_RaspberryPi3′,’test_success_on_2017/01/06′))

ソースは、以下

=====================

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# ドライバをimport
import mysql.connector

if __name__ == ‘__main__’:
# データベースに接続

# localhost access ok!!!!!
# connect = mysql.connector.connect(user=’***t’, password=’***t’, host=’localhost’, database=’20**12**_sen*or’, charset=’utf8′)

# connect OK!!!! and select OK!!!!!
connect = mysql.connector.connect(user=’ra**ai’, password=’A*****6′, host=’160.**.**.187′, database=’20**11**_sen*or’, charset=’utf8′)
cursor = connect.cursor()

create_date1 = now()

temp1 = ’70’

humid1= ’70’

# insert
# cursor.execute(‘insert into ******or values(20170107,100,100,”test_Raspberry”,”test_success_on_2017/01/06″‘)
cursor.execute(‘insert into ******or (time_stamp,temp,humid,water_need,memo) values (%s, %s, %s, %s, %s)’, (‘20170107′,’50’,’50’,’test_from_RaspberryPi3′,’test_success_on_2017/01/06′))
# select
cursor.execute(‘select * from t_sensor order by Num DESC limit 10’)

rows = cursor.fetchall()

# 出力
for i in rows:
print(i[0])
print(i[1])
print(i[2])
print(i[3])
print(i[4])
print(i[5])
# データベースから切断
cursor.close()
connect.close()

=====================

でも、SQLにきちんと保存されない???課題あり!!!!

あっ、でもこれは、多分

http://www.yoheim.net/blog.php?q=20151102

を参照すると、、、、、

# autocommitではないので、明示的にコミットする

connect.commit()

を追加すれば解決可能(のはず)。

またついでなんで、time_stampは、自動日時を下記で設定できるかも。。

http://www.hiihah.info/index.php?E71%EF%BC%9AMySQL%E3%81%A7%E3%81%AE%E6%97%A5%E4%BB%98%E3%80%81%E6%99%82%E5%88%BB%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

を参考にすると、

現在時刻をインサートしたい 、、結局これで入りました!!!

temp1=’80’
humid1=’80’

cursor.execute(‘insert into ****sor (time_stamp,temp,humid,water_need,memo) values (now(), %s, %s, %s, %s)’, (temp1,humid1,’test_from_RaspberryPi3′,’test_success_on_2017/01/07′))

++++++++++++++++++++++++

今のコードは以下 2017/01/08 8:00

20170106_pytosql2  <—/inset to localhost and sakuravps success!

20170106_pytosql3  <—/check python prg then select only !

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# ドライバをimport
import mysql.connector

if __name__ == ‘__main__’:
# データベースに接続

# localhost access ok!!!!!
# connect = mysql.connector.connect(user=’r**t’, password=’****‘, host=’localhost’, database=’201*********’, charset=’utf8′)

# connect OK!!!! and select OK!!!!!
connect = mysql.connector.connect(user=’r***ai’, password=’A*****6′, host=’160.**.**187′, database=’**********or’, charset=’utf8′)
cursor = connect.cursor()

# insert
# cursor.execute(‘insert into ******sor values(20170107,100,100,”test_Raspberry”,”test_success_on_2017/01/06″‘)

# success!!
# cursor.execute(‘insert into ******r (time_stamp,temp,humid,water_need,memo) values (%s, %s, %s, %s, %s)’, (‘2017-01-07′,’50’,’50’,’test_from_RaspberryPi3′,’test_success_on_2017/01/06′))

temp1=’80’
humid1=’80’

cursor.execute(‘insert into *******r (time_stamp,temp,humid,water_need,memo) values (now(), %s, %s, %s, %s)’, (temp1,humid1,’test_from_RaspberryPi3′,’test_success_on_2017/01/07′))
# autocommitではないので、明示的にコミットする
connect.commit()

print(“insert success!”)
# データベースから切断
cursor.close()
connect.close()

++++++++++++++++++++++++

以上

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です