ばーろぐわにる

SIerからWEB系?インフラエンジニアにジョブチェンジした見習いの備忘録。投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。

Python使ってMySQLに接続する

MySQLの準備

コンテナイメージ取得

docker pull mysql

コンテナ起動

docker hubの説明をもとに起動。ローカルでプログラムを実行するつもりなので -p でローカルポートを指定しておく

docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:latest

接続確認

mysql -h 127.0.0.1 -u root -p

テストDB, テーブル作成

> CREATE DATABASE testdb;
> USE testdb;
> CREATE TABLE tb001 (id int, name char(50));
> INSERT INTO tb001 (id, name) VALUES (0, 'hogehoe');
> INSERT INTO tb001 (id, name) VALUES (1, 'fugafuga');

PythonMySQLに接続する

mysql-connector-python ってのが良いらしい。公式ドキュメント見ながら進める。

https://dev.mysql.com/doc/connector-python/en/

pip install

pip install mysql-connector-python

サンプルコード

import mysql.connector

cnx = mysql.connector.connect(user='root', database='testdb', password='password')
cur = cnx.cursor(buffered=True)
query = "SELECT * FROM tb001"
cur.execute(query)
cnx.commit()
print(cur.fetchall())
cnx.close()

カーソルはSLECTで取得した結果を変数として利用して、クエリを実行できる機能。この表現が正しいのか少し不安、なんか違ってる気がする。

https://www.atmarkit.co.jp/ait/articles/1703/01/news193.html

実行結果

$ python connect-mysql.py
[(0, 'hogehoe'), (1, 'fugafuga')]

実行結果は配列で取得できるらしい。