0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PyMySQLを使って、Docker上のMySQLとローカルのPythonを繋げてみる

Last updated at Posted at 2021-11-03

やったこと

タイトルにある通り、PyMySQLを使って、ローカルのPythonとDocker上のMySQLでやりとりしてみた。
connectorはいくつもあるでしょうが、PyMySQLを使用した理由は、GitHubで
「MySQL Python」で検索して、最もstarがついていたから。

version
Python 3.9
MySQL 8.0

引用元: PyMySQLのドキュメント
https://pymysql.readthedocs.io/en/latest/index.html

MySQLのコンテナ立ち上げ on Docker

docker run --name container_name -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:latest

MYSQL_ROOT_PASSWORDは好きに設定する

ローカルでPyMySQLのインストール

python3 -m pip install PyMySQL

MySQLコンテナ内でデータベース、テーブルを作成

# MySQLコンテナ内に入る
docker exec -it countainer_name bash


# コンテナ内にて
mysql -u root -p設定したpassword
# データベース作成
mysql > CREATE DATABASE test;
mysql > use test;
# テーブル作成(nameとageカラム)
mysql > CREATE TABLE test (name varchar(10), age int);

PythonとMySQLを繋げる

db.py
import pymysql.cursors
# Connect to the database
connection = pymysql.connect(host='localhost',
    user='root',
    password=設定したMYSQL_ROOT_PASSWORD,
    database='test',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor)

実行してみると↓のようなエラー発生
'cryptography' package is required for sha256_password or caching_sha2_password auth methods

cryptographyインストール

エラーにある通りcryptographyパッケージをインストール

pip install cryptography 

これでもう一度db.pyを実行してみるとつながりました。
これでDBとやりとりできます:clap:

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?