環境
- Python: 3.6
- pipenv: 2018.7.1
- pip: 18.0.0
- mysql-connector-python: 8.0.16
- Docker: 2.0.0.3
- Image: mysql 8.0.16, 8.0, 8, latest
執筆したきっかけ
研究で使用する機会があり,備忘録程度にまとめました
MySQLのコンテナを立ち上げるまで
- Dockerコマンドを確認
$ docker -v
- DockerHubからMySQLイメージをダウンロード
$ docker pull mysql
- コンテナ起動
参考: dockerでmysqlを使う
$ docker run --name mysql -e MYSQL_ROOT_PASSWORD=mysql -d -p 3306:3306 mysql
-name
の変数は任意.MYSQL_ROOT_PASSWORD
はrootのパスワードなので,それなりのものにしてください.-p
は,動かすポートを指定しています.例えば,8080でデタッチしたいなら,8080:3306としてください.
- コンテナの起動確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bab20717195b mysql "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
- コンテナに接続
$ docker exec -it 'CONTAINER ID' bash
- MySQLに入る
$ mysql -u root -p
- データベースを作成
参考: MySQLチートシート
mysql> CREATE DATABASE python_test;
mysql> SHOW DATABASES;
PythonからDockerコンテナ内のMySQLに接続するまで
- 仮想環境を構築
$ pipenv --python 3.6
$ pipenv install
$ pipenv shell
- ライブラリをインストール
$ pipenv install mysql-connector-python
$ pip list
mysql_test.py
import mysql.connector
# コネクションの作成
conn = mysql.connector.connect(
host='localhost',
port='3306',
user='root',
password='mysql',
database='python_test'
)
# コネクションが切れた時に再接続してくれるよう設定
conn.ping(reconnect=True)
# 接続できているかどうか確認
print(conn.is_connected())