MySQLインストールしてPythonからアクセスするまで
Windows10 + MySQL8.0 + Python3.8.5
MySQLをPythonから使いたかった。
そもそもPCにMySQLが入ってないのでそこからやる。
1. MySQLインストーラーダウンロード
MySQLの公式サイトからダウンロード。
https://dev.mysql.com/downloads/windows/installer/
「Windows (x86, 32-bit), MSI Installer」をダウンロード。
2つあるうちのサイズが小さいほうはインストール時にダウンロードするタイプ。
どちらでもいいが大きいほうにした。
アカウントの作成を勧められる。
アカウントを作りたくないので下の「No thanks, just start my download.」を押す。
2. MySQLインストール
「mysql-installer-community-8.0.22.0.msi」を実行。
インストール時に選択肢がいくつかある。
- Choosing a Setup Type
Developerなので「Developer Default」を選択。
- Check Requirements
足りないものがあるから「MySQL for Visual Studio 1.2.9」がインストールできないらしい。
いらないので無視して「Next」。
- Installation
「Execute」を押してインストール。
- Product Configuration
「Next」を押してMySQL Serverの初期設定をする。
- Type and Networking
デフォルト設定のまま「Next」。
- Authentication Method
デフォルト設定のまま「Next」。
- Accounts and Roles
rootのパスワードを設定する。
- Windows Service
デフォルト設定のまま「Next」。
- Apply Configuration
「Execute」を押して設定変更を反映させる。
- Product Configuration
「Next」を押してMySQL Routerの初期設定をする。
- MySQL Router Configuration
デフォルト設定のまま「Finish」。
- Product Configuration
「Next」を押してSAmples and Examplesの初期設定をする。
- Connect To Server
さっきのパスワードを入力して「Check」を押すとつながるかチェックできる。
チェックできたら「Next」。
- Apply Configuration
「Execute」を押して設定変更を反映させる(何も変更していないが)。
- Product Configuration
「Next」を押す。もう初期設定するものはない。
- Installation Complete
「Start 〇〇」のチェックボックスにチェックが入っていると終了時にそれらが起動する。
今すぐ動かすつもりはないので外していい。
「Finish」を押すと終了。
3. 試しに動かす mysqlsh
MySQLがちゃんと動くかMySQL Shell
で確かめる。
ここで作ったものを後でPythonから接続・操作する。
3.1. MySQL に接続する
MySQLをインストールしたときにMySQL Shell
というものが一緒にインストールされている。
コマンドプロンプトから、
1 | mysqlsh |
と入力するとMySQL Shell
が起動する。
こんな感じになる↓
1 | MySQL Shell 8.0.22 |
MySQL Shell
が起動したら以下のコマンドでMySQLに接続する。
1 | \connect root@localhost |
パスワードを聞かれるのでさっき決めたパスワードを入力する。
1 | Creating a session to 'root@localhost' |
パスワードを保存するか聞かれる。
保存するならY
を入力する。
1 | Save password for 'root@localhost'? [Y]es/[N]o/Ne[v]er (default No): |
3.2. データベースを作る
MySQL Shell
起動時はJSモードになっている。
以下のコマンドでSQLモードに変更する。(JSモードのままでも書式を変えて書けば同じように動く)
1 | \sql |
new_db
という名前のデータベースを作成する。
1 | create database new_db; |
ちゃんとできているか以下のコマンドで確認する。
1 | show databases; |
new_db
が作られている。
それ以外にも最初からいくつかデータベースが存在している。
1 | +--------------------+ |
3.3. テーブルを作る
以下のコマンドでnew_db
を操作することを宣言する。
1 | use new_db; |
sample
という名前のテーブルを作る。sample
はid
, name
, age
の3属性を持っている
1 | create table sample(id integer, name varchar(20), age integer); |
ちゃんとできているか以下のコマンドで確認する。
1 | show tables; |
できてる。
1 | +------------------+ |
3.4 データを追加する
いくつかデータを追加する。
1 | insert into sample (id, name, age) values (1, "taro", 5); |
ちゃんとできているか以下のコマンドで確認する。
1 | select * from sample; |
できてる。
1 | +----+------+-----+ |
4. Python からMySQLを操作する
以下のpythonファイルを作成、実行する。
mysql_test.py
1 | import mysql.connector as mydb |
さっき作ったデータが表示された。
接続できていることが分かる。
1 | (1, 'taro', 5) |
cur.execute()
の中身を変えると別のSQL文を実行できる。
例えば以下の文を追加するとテーブルに新しいデータが追加できる。
1 | cur.execute("insert into sample (id, name, age) values (4, 'melon', 33)") |
その後、以下のコマンドで変更を反映させないとデータベースに登録されない。
1 | cnx.commit() |
MySQL Shell
の側からselect * from sample;
で確認する。
1 | +----+-------+-----+ |
Pythonからデータベースが操作されていることが分かる。
5. コード
実験に使用したコード。
mysql_test.py
1 | import mysql.connector as mydb |