アメグラ2号のブログ

1980年代後半の古き良きビデオゲームのほか、オッサンの個人的備忘録

ラズパイ python3でMariaDBへ接続

alt

◆目的:python3でMariaDBに接続したい。

※以前にphp,mariaDBを構築済

CUIMariaDBへの接続、テーブルいじりはできたけど、肝心のスクリプトからは未確認だった。そのため、今回は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)

mysql-connector-pythonインストール

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