LoginSignup
14
16

More than 3 years have passed since last update.

PythonからDockerコンテナ内のMySQLに接続するまで

Posted at

環境

  • 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 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> 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())
14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16