このガイドは3つの部分に分けられている:
MySQLのインストール
-
WindowsのMySQL Installerをダウンロードする (このリンクでMySQLのページへ行ける)。
-
インストーラを実行する。
-
「MySQL Server」とパソコンにインストールされているPythonのバージョンと一致する「MySQL Connector」を選んで、「Next」をクリックする。
-
「Standalone MySQL Server / Classic MySQL Replication」を選んで、「Next」をクリックする。
-
パソコンの設定として「Server Computer」を選んで、Nextをクリックする。
メモ: このチュートリアルでは、「Developer Computer」と「Server Computer」の間に違いはない
-
「Use Strong Password Encryption for Authentication (RECOMMENDED)」を選んで「Next」をクリックする。
-
ルート(root)アカウントのパスワードを決めて、「DB Admin]というタイプのユーザーを作って、 「Next」をクリックする。
Pythonでサーバーとデータベースの設定
メモ: 以下の手続きはPythonを使わず、MySQL Shellで行うこともできる。
コネクタのインストール
まず、PythonでMySQLが使えるように、CommandPromptでpipを使い、コネクタをインストールする。そのために、pip install mysql-connector
を入力する。
Pythonの手続き
最初に、先述のモジュールをインポートする
import mysql.connector as db
次に, サーバーと繋がるために、MySQLのインストールの時に設定された「root」というユーザ,およびそのパスワードをメンバとして MySQLConnection
のインスタンスを生成する。
その後、サーバーのカーソルを初期化する。
mydb = db.connect(
host = "localhost",
user = "root",
passwd = "password"
)
mycursor = mydb.cursor()
次に、特権を持っているユーザー,および利用するデータベースを生成する。
mycursor.execute("CREATE DATABASE IF NOT EXISTS my_database;")
# 「''」には自身で作成したユーザー名とパスワードを入れる
# clientipaddressをクライアントのIPアドレスに差し替える
mycursor.execute("CREATE USER IF NOT EXISTS 'username'@clientipaddress IDENTIFIED BY 'password';")
mycursor.execute("GRANT ALL PRIVILEGES ON *.* to 'username'@clientipaddress;")
次に、カーソルをデータベースに入れて、テーブルを生成する。
mycursor.execute("use my_database;")
mycursor.execute("CREATE TABLE my_table (name varchar(20),age int(2));")
これで、データベースの設定が完了した。
Python Full Code
import mysql.connector as db
mydb = db.connect(
host = "localhost",
user = "root", # サーバーのルートのアカウント
passwd = "password"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE IF NOT EXISTS my_database;")
# 「' ']に適切なユーザ名とパスワードを入力する
# clientipaddressをクライアントのIPアドレスに差し替える
mycursor.execute("CREATE USER IF NOT EXISTS 'username'@clientipaddress IDENTIFIED BY 'password';")
mycursor.execute("GRANT ALL PRIVILEGES ON *.* to 'username'@clientipaddress;")
# 何のデータベースを使うかを指定する
mycursor.execute("use my_database;")
# テーブルを生成する
mycursor.execute("CREATE TABLE my_table (name varchar(20),age int(2));")
今から、単純なクライアントアプリを作る
Pythonのクライアントアプリの例
この例で、ネットワーク上にあるパソコンのサーバーと繋がって、先に作っておいたテーブルにデータを入れる。
Python Step-by-Step
先ほどと同じく、コネクタのモジュールをインポートする
import mysql.connector as db
それから、サーバーとそれに入っているデータベースと繋がって、カーソルを初期化する
mydb = db.connect(
host = serverpaddress, # replace for the server's IP address
user = "username", # previously created user
passwd = "password", # and its password
database = "my_database" # we directly connect to the desired database
)
mycursor = mydb.cursor()
次に, SQLのコマンドを作成して、 値を与えて, コマンドを実行する. データベースの変化を保存するために、コミットをする。
sql_command = "INSERT INTO my_table (name, age) values (%s, %s);"
values = ('my_name', 1)
mycursor.execute(sql_command, values)
# 変化を保存する
mydb.commit();
SELECTでテーブルに保存されている情報を見ることが出来る
sql_command = "select * from my_table"
mycursor.execute(sql_command)
[print(x) for x in mycursor.fetchall()]
出力が ('my_name', 1)
であれば成功。
Example's Full Code
# 必要なモジュールをインポートする
import mysql.connector as db
# データベースと繋がる
mydb = db.connect(
host = serveripaddress, # サーバーのIPアドレスに差し替える
user = "username", # サーバを設定する時に作られたユーザー
passwd = "password", # とそのユーザーのパスワード
database = "my_database" # 直接的にデータベースと繋がる
)
# カーソルを初期化する
mycursor = mydb.cursor()
# コマンドを定義する
sql_command = "INSERT INTO my_table (name, age) values (%s, %s);"
# 値を与える
values = ('my_name', 1)
# コマンドを実行する
mycursor.execute(sql_command, values)
# 変化を保存させる
mydb.commit();
# データベースからデータをもらう
sql_command = "select * from my_table"
mycursor.execute(sql_command)
# データを出力する
[print(x) for x in mycursor.fetchall()]