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()
++++++++++++++++++++++++
以上