『実践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の列名とデータ型は以下のようになっています。
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()
サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪