やったこと
タイトルにある通り、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とやりとりできます