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');
PythonでMySQLに接続する
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')]
実行結果は配列で取得できるらしい。