◆目的:python3でMariaDBに接続したい。
CUIでMariaDBへの接続、テーブルいじりはできたけど、肝心のスクリプトからは未確認だった。そのため、今回はpythonから動かしてみる。
まずは接続テスト
実験スクリプト
#! usr/bin/env python3 #MariDBとの接続テスト用 #ライブラリ読み込み import mysql.connector # コネクションを作成 con = mysql.connector.connect( host='localhost', port='3306', user='root', password='******', database='******' ) #補足: #host='localhost'・・・大抵は自分のPC環境なのでlocalhost #port='3306'・・・接続TCPポートは3306 #user='root'・・・MariaDB作成時にrootと決めてしまうので。 #password='データベースのパスワード' #database='データベース名' # コネクションの状態を出力 print(con.is_connected()) # コネクションを閉じる con.close()
◆動かない
pi@raspberrypi:~ $ python3 dbconnect.py Traceback (most recent call last): File "dbconnect.py", line 3, in <module> import mysql.connector ModuleNotFoundError: No module named 'mysql'
モジュールない?mysql.connectorもといmysql??
そうなの?仕方ないのでpipでインストールを…
pip install mysql-connector-python
-bash: pip: command not found
あれ?pipが動かない。
ググるとこんな記事が。
→pipの場所が/usr/local/bin/pip に変わってる可能性があり
◆まずは古いpipの削除
apt-get remove python-pip
◆インストール
・Python3の開発用パッケージをインストール
~$ sudo apt-get -y install python3-dev
・Python3のpipをインストール
~$ sudo apt-get -y install python3-pip
◆チェック
pi@raspberrypi:~ $ pip3 --version pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
pi@raspberrypi:~ $ pip3 install mysql-connector-python Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting mysql-connector-python Downloading https://files.pythonhosted.org/packages/13/62/5234fb85bf30c28c70c6c7664926bd4b40e3c1d914f6e275174801cf8b8a/mysql_connector_python-8.0.23-py2.py3-none-any.whl (379kB) 100% |████████████████████████████████| 389kB 527kB/s Collecting protobuf>=3.0.0 (from mysql-connector-python) Downloading https://files.pythonhosted.org/packages/14/a9/dd95de0539b60b2139fae55148948c39a00e4a4647247b2102d502dcd207/protobuf-3.15.6-py2.py3-none-any.whl (173kB) 100% |████████████████████████████████| 174kB 933kB/s Requirement already satisfied: six>=1.9 in /usr/lib/python3/dist-packages (from protobuf>=3.0.0->mysql-connector-python) (1.12.0) Installing collected packages: protobuf, mysql-connector-python Successfully installed mysql-connector-python-8.0.23 protobuf-3.15.6
◆動いた
pi@raspberrypi:~ $ python3 dbconnect.py True
◆DBからデータを読み出す
先ほどのスクリプトに追記する。
#! usr/bin/env python3 #MariDBとの接続テスト用 import mysql.connector # コネクションを作成 connect = mysql.connector.connect( host='localhost', port='3306', user='root', password='******', database='******' ) #ここから追記情報//////// #カーソルをOPEN cursor=connect.cursor() #SQL実行 cursor.execute('select * from table1;') #カーソルの中身がなくなるまで繰り返し for row in cursor.fetchall(): print(row[0],row[1],row[2],row[3]) #カーソルクローズ cursor.close() # コネクションの状態を出力 print(connect.is_connected()) # コネクションを閉じる connect.close()
◆実行結果
pi@raspberrypi:~ $ python3 dbconnect.py 1 ねこ にゃーん 2021-03-11 11:02:47 2 いぬ わんわん! 2021-03-11 11:03:06 3 らいおん がお~~~~~~~~~~~~ 2021-03-11 11:03:19 True