アリンコス部品管理その24
今回はデータベースに情報が登録出来るかをテストする
#2022-3-28作成 #ファイル名:データベースの実装_アリンコス部品管理 #部品管理テーブルと内訳テーブルの関係図をもとに作成している #例外が発生しました: RuntimeError:Failed to create exception 2022-4-5 mariadb_connection = mariadb.connectが原因に #mysql.connectorでtypeErrorが発生エラー内容[引数の数が違う] 2022-3-30 from msilib.schema import Error import mariadb import sys # データベースへの接続とカーソルの生成 try: conn = mariadb.connect( host='localhost', user='root', passwd='******', port=33**, database='arincos_parts_test') #'arincos_parts_test'とする except mariadb.Error as er: print(f"Error Connecting to MariaDB Platform: {er}") #MariaDB プラットフォームへの接続エラー sys.exit(1) #プログラムをエラー終了 #Get Cursor cur = conn.cursor() #外部キー制約の有効化(mariaDB) #cur.execute("PRAGMA foreign_keys = 1") # 既にデータベースが登録されている場合は、ddlの発行でエラーが出るのでexceptブロックで回避する try: #item_alincos(内訳)テーブルの定義 ddl =""" CREATE TABLE item_alincos ( quantity_possessed INTEGER PRIMARY KEY, consumed_quantity INTEGER NOT NULL, date_consumed DATE NOT NULL ); """ #SQL発行 cur.execute(ddl) #alincos_parts_data(部品管理)テーブルの定義 ddl = """ CREATE TABLE alincos_parts_data ( product_name VARCHAR(400) PRIMARY KEY, model_number CHAR(20) NOT NULL, quantity_possessed INTEGER NOT NULL, FOREIGN KEY(quantity_possessed) REFERENCES item_alincos(quantity_possessed) ); """ #SQL発行 cur.execute(ddl) #item_alincos(内訳)テーブル登録のテスト cur.execute("INSERT INTO item_alincos VALUES(6, 2, '2020-1-6');") cur.execute("INSERT INTO item_alincos VALUES(127,14,'2020-5-8');") cur.execute("INSERT INTO item_alincos VALUES(100,7,'2021-9-4');") cur.execute("COMMIT;") #alincos_parts_data(部品管理)テーブル登録のテスト cur.execute(""" INSERT INTO alincos_parts_data(product_name,model_number,quantity_possessed) VALUES('電子ブザー','HDB06LPFN',6); """) cur.execute("COMMIT;") #alincos_parts_data(部品管理)テーブル登録のテスト(変数を使った登録) product_name = '電子ブザー' model_number = 'HDB06LPFN' quantity_possessed = 6 cur.execute(""" INSERT INTO alincos_parts_data() VALUES();""".format(product_name,model_number,quantity_possessed) ) cur.execute("COMMIT;") except: pass #最後に登録されているデータの表示をして確認する #item_alincosテーブルの表示 result = cur.execute("SELECT * FROM item_alincos") for row in result: print(row) #alincos_parts_dataテーブルの表示 result = cur.execute("SELECT * FROM alincos_parts_data") for row in result: print(row) #alincos_parts_dataテーブルとitem_alincosテーブルを結合し表示する result = cur.execute(""" SELECT a.product_name, i.consumed_possessed, a.model_number, i.date_consumed FROM alincos_parts_data as a, item_alincos as i WHERE a.quantity_possessed = i.quantity_possessed; """) for row in result: print(row) cur.commit() # 接続を閉じる cur.close()
だが、上手く情報を登録出来ないので、次回あたりは、失敗した例を紹介する