はじめに
-
AWS上でリレーショナルデータベースを扱うには、以下の方法があります。
-
AWS EC2を構築して、DBを乗せる
-
AWS RDSを使う
AWS RDS無料枠
- 無料枠は以下の内容
- 750 時間/月の db.t2.micro データベース使用 (適用可能な DB エンジン)
- 20 GB の汎用 (SSD) データベースストレージ
- 20 GB のデータベースバックアップおよび DB スナップショット用ストレージ
簡単作成 - MySQL -
EC2での作業(2020.05.02追記)
mysql-clientのインストール
$ sudo apt install mysql-client-core-5.7
EC2 -> RDSに接続する
$ mysql -h RDSのエンドポイント -u RDSで設定したユーザ -p RDSで設定したパスワード
mysql側での作業(2020.05.02追記)
ユーザ・データベースの作成
mysql> CREATE USER 'mysql'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> SET PASSWORD FOR 'mysql'@'%'='MyPassw0rd';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE DATABASE awsfree;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL ON awsfree.* TO 'mysql'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE staff (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
staff_name VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT charset = utf8;
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO staff (staff_name) VALUES ('尼存 太郎');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO staff (staff_name) VALUES ('尼存 花子');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM staff;
+----+---------------+
| id | staff_name |
+----+---------------+
| 1 | 尼存 太郎 |
| 2 | 尼存 花子 |
+----+---------------+
2 rows in set (0.00 sec)
動作確認(2020.05.02追記)
pymysqlのインストール
$ pip install pymysql
python -> mysql接続テスト
rds_config.py
rds_host = 'RDSのエンドポイント'
db_user = 'mysql'
db_password = 'MyPassw0rd'
db_name = 'awsfree'
rds_test.py
import pymysql
import rds_config as RDS
con = pymysql.connect(
host=RDS.rds_host,
user=RDS.db_user,
password=RDS.db_password,
db=RDS.db_name,
cursorclass=pymysql.cursors.DictCursor
)
try:
with con.cursor() as cur:
sql = 'SELECT * FROM staff'
cur.execute(sql)
result = cur.fetchall()
print(result)
except:
print('Error !!!!')
staff追加
sql = 'INSERT INTO staff (staff_name) VALUES (%s)'
cur.execute(sql, ('尼存 次郎'))
con.commit()
接続テスト
$ python rds_test.py
実行結果
[{'id': 1, 'staff_name': '尼存 太郎'}, {'id': 2, 'staff_name': '尼存 花子'}]
おわりに
- AWS RDSを使うとボタン、ポチポチで環境構築出来て便利。
- EC2->RDSへの接続テストを追記しました。(2020.05.02)