見出し画像

『実践Pythonによるデータベース入門』演習問題5.1

今日は、『実践Pythonによるデータベース入門』の演習問題5.1で学んだことをアウトプットします。

【演習問題5.1】
下記仕様要求を実現するPythonプログラムを作成せよ。
仕様要求
(1)MySQLサーバーへの接続を行う。
(2)データベースnewtodoufukenbaseを作成する。
(3)newtodoufukenbaseの中に演習問題【2.1】の仕様にしたがって、テーブルtodoufukenを作成する。
(4)テーブルtodoufukenの構成を表示する。
(5)接続を切断する。

(1)MySQLサーバーへの接続を行う。
(2)データベースnewtodoufukenbaseを作成する。

こちらは仕様要求を一旦忘れて^^;
(1)コマンドライン上でnewtodoufukenbaseを作成
(2)ユーザーsampleuserに、newtodoufukenbaseについてのすべての権限を付与する

ということをやっていこうと思います。

mysql> CREATE DATABASE newtodoufukenbase;
Query OK, 1 row affected (0.58 sec)

mysql> grant all on newtodoufukenbase.* to 'sampleuser';
Query OK, 0 rows affected (0.24 sec)

(3)newtodoufukenbaseの中に演習問題【2.1】の仕様にしたがって、テーブルtodoufukenを作成する。

ここからはPythonのプログラムを書いていきます。テーブルtodoufukenの列名とデータ型は以下のようになっています。

画像1

import mysql.connector

# コネクターを作成
config = {
   'user': 'sampleuser',
   'password': 'samplepasswd',
   'host': 'localhost',
   'database': 'newtodoufukenbase',
}

dbconnector = mysql.connector.connect(**config)

# 接続できているかどうか確認
if dbconnector.is_connected():
   print('データベースへの接続が成功しました。')
else:
   print('データベースへの接続が失敗しました。')
   exit(1)

# cursorオブジェクトの生成
cursor = dbconnector.cursor(buffered=True)
# 属性 kenmei, kenchou, jinkou, mensekiを持つテーブルを作成
operation = ("DROP TABLE IF EXISTS todoufuken;"
           "CREATE TABLE todoufuken ( kenmei CHAR(20), kenchou CHAR(20), jinkou INT, menseki float);"
           )

# SQL命令文を実行
results = cursor.execute(operation, multi=True)
for res in results:
   print(res)

実行すると、

$ python3 exercise5_1.py 
データベースへの接続が成功しました。
MySQLCursorBuffered: DROP TABLE IF EXISTS todoufuken
MySQLCursorBuffered: CREATE TABLE todoufuken ( kenmei CHAR(20..


(4)テーブルtodoufukenの構成を表示する。

# テーブルtodoufukenの構成を表示する。
cursor.execute("SHOW fields FROM todoufuken;")
tuples = cursor.fetchall()
print("テーブルtodoufukenの構成:")
for tpl in tuples:
   print(tpl)

実行すると、以下のようになりました。

テーブルtodoufukenの構成:
('kenmei', b'char(20)', 'YES', '', None, '')
('kenchou', b'char(20)', 'YES', '', None, '')
('jinkou', b'int', 'YES', '', None, '')
('menseki', b'float', 'YES', '', None, '')

(5)接続を切断する。

# 接続を切断
dbconnector.close()

サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪