🤔

サクッとDocker+SQL+Pythonをローカルで実行する方法

2022/07/29に公開約1,400字

背景

AWSのバックエンドをlambda + RDS構成で行おうとした時に、PythonスクリプトでSQLをいじる必要があるので、ローカルでスクリプトの検証をサクッとやりたいなと思った次第です。

前提条件

Dockerのインストールが済んでいること。

SQLの立ちあげ

DockerでMySQLインスタンスを立ち上げてPythonからアクセスしましょう。
作業ディレクトリをよしなに作り、Dockerfileとdocker-compose.ymlを以下のように書いてあげます。

Dockerfile

FROM mysql:5.7

RUN apt-get update && apt-get install -y locales \
    && sed -i -e 's/# \(ja_JP.UTF-8\)/\1/' /etc/locale.gen \
    && locale-gen \
    && update-locale LANG=ja_JP.UTF-8

ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8

docker-compose.yml

version: "3"
 
services:
    mysql:
        image: mysql:5.7
        platform: linux/amd64 # m1macだとこれが必要でした。       
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: mydb
        ports:
            - 3306:3306
	command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci #日本語対応

あとはサーバーを立ち上げるだけ
最初にインストールしたあと、ブワーーーっとログが出て、ready for connectionsと出ればサーバがlocalhost:3306に建ってます。

docker-compose up

SQLを直で実行してみる(やりたい人はどうぞ)

SQL GUIソフトのWorkbenchを起動し、MySQL Connectionsを以下の設定で立てます。
hostname: localhost
port: 3306
username:root
password:root
クエリー画面が表示されたら以下のコードを入力して、cmd + Shift + Enter で実行してみてください。
mydbが表示されればOKです。

Pythonから疎通してみる

あとはpymysqlをpip installしてから、
Pythonシェルで以下のコマンドを叩いて疎通確認!Trueと出れば成功です!

import pymysql
connection = pymysql.connect(host='localhost', port=3306, user='root', password='root', db='mydb')
connection.open

Discussion

ログインするとコメントできます