今回作成するもの
pythonとsqlite3をつかって簡単にデータベース操作をできるようにする簡易システムみたいなものを作成する。
主な機能
- テーブル作成機能: テーブル存在チェックあり。連続作成機能なし
- テーブル削除機能: テーブル存在チェックあり。連続削除機能なし
- ユーザーの追加機能: 重複ユーザーの存在チェックなし、連続追加機能なし。
- ユーザーの削除機能: ユーザーの存在チェックあり。連続削除機能なし。
- テーブルの一覧表示機能
- ユーザーの一覧表示機能: テーブル選択機能なし。
- テーブルの検索機能: ユーザー名で検索できる機能実装
テーブル作成 create_table.py
# sqlite3モジュールの読み込み import sqlite3 # テーブル一覧を表示する関数 def printtable(): print("☆☆☆テーブル一覧☆☆☆") c.execute("select * from sqlite_master where type='table'") for x in c.fetchall(): print(x) print("☆☆☆☆☆☆☆☆☆☆☆☆") # データベースに接続 conn = sqlite3.connect("database.sqlite") # カーソルオブジェクトの作成 c = conn.cursor() # テーブル一覧の表示 printtable() # 新しいテーブルの名前 print("\n") tablename = input("新しいテーブルを作成します。テーブル名を入力してください: ") print("\n") c.execute("select count(*) from sqlite_master where type='table' and name='%s'" % tablename) # sql = "create table if not exists users(id integer primary key, name text, address text)" # テーブルが存在しないとき if c.fetchone() == (0,): # テーブル作成のSQL文: sql = "create table %s (id integer primary key, name text, address text)" % tablename # sql文の実行 c.execute(sql) # コミット conn.commit() # 確認 print(str(tablename) + "テーブルを作成しました\n") else: print(str(tablename) + "テーブルはすでに存在しています。\n") # テーブル一覧を表示 printtable() # 終了 print("\n") input("エンターキーで終了します: ") #python conn.close()
テーブル削除 drop_table.py
# sqlite3とtkinterモジュールの読み込み import sqlite3 from tkinter import messagebox # テーブル一覧を表示する関数 def printtable(): print("☆☆☆テーブル一覧☆☆☆") c.execute("select * from sqlite_master where type='table'") for x in c.fetchall(): print(x) print("☆☆☆☆☆☆☆☆☆☆☆☆") # データベースに接続 conn = sqlite3.connect("database.sqlite") # カーソルオブジェクトの作成 c = conn.cursor() # テーブル一覧を表示 printtable() # 削除したいテーブル名を入力 print("\n") tablename = input("削除したいテーブル名を入力していください: ") print("\n") c.execute("select count(*) from sqlite_master where type='table' and name='%s'" % tablename) # sql = "create table if not exists users(id integer primary key, name text, address text)" # テーブルが存在しないとき if c.fetchone() == (0,): print("\n") print("指定のテーブルは存在しません。") print("\n") else: # テーブル削除のsql文 sql = "drop table '%s'" % tablename # 削除時の確認 ans = messagebox.askyesno("確認", str(tablename) + "テーブルを削除します。本当に削除しますか?") if ans == True: # sql文の実行 c.execute(sql) # コミット conn.commit() # 確認 print("\n") print(str(tablename) + "テーブルを削除しました") print("\n") # テーブル一覧を表示 printtable() else: print('削除をキャンセルしました') # 終了 print("\n") input("エンターキーで終了します: ") # データベースの切断 conn.close()
ユーザーの追加 insert_user.py
# sqlite3モジュールの読み込み import sqlite3 # データベースに接続 conn = sqlite3.connect("database.sqlite") # カーソルオブジェクトの作成 c = conn.cursor() # データの挿入 username = input("名前を入力してください: ") address = input("住所を入力してください: ") sql = "insert into users(name, address) values (?, ?)" user = (username, address) c.execute(sql, user) # コミット conn.commit() print('\n') # 空行 print(str(username) + " を登録しました") print('\n') # 空行 select = "select * from users" for row in c.execute(select): print(row) print('\n') # 空行 # エンターキー a = input("エンターキーで終了します: ") # データベースの切断 conn.close()
ユーザーの削除 delete_user.py
# sqlite3モジュールの読み込み import sqlite3 # データベースに接続 conn = sqlite3.connect("database.sqlite") # カーソルオブジェクトの作成 c = conn.cursor() def printuser(): print("\n") # 空行 sql = "select * from users" for row in c.execute(sql): print(row) print("\n") # 空行 # 表示 printuser() # データの削除 username = input("削除したい人の名前を入力してください(カタカナ): ") c.execute("select count(*) from users where name='%s'" % username) if c.fetchone() == (0,): print("\n") print(str(username) + "は存在しません") else: sql = "delete from users where name = '%s'" % username c.execute(sql) # コミット conn.commit() # 確認 print("\n") print(str(username) + " を削除しました") # 表示 printuser() # 終了 print("\n") input("エンターキーで終了します: ") # データベースの切断 conn.close()
テーブル一覧の表示 .tables.py
# sqlite3モジュールの読み込み import sqlite3 # データベースに接続 conn = sqlite3.connect("database.sqlite") # カーソルオブジェクトの作成 c = conn.cursor() # テーブル一覧を表示 print("☆☆☆テーブル一覧☆☆☆") c.execute("select * from sqlite_master where type='table'") for x in c.fetchall(): print(x) print("☆☆☆☆☆☆☆☆☆☆☆☆") # 終了 print("\n") input("エンターキーで終了します: ") # データベース切断 conn.close()
ユーザー一覧の表示 .users.py
# sqlite3モジュールの読み込み import sqlite3 # データベースに接続 conn = sqlite3.connect("database.sqlite") # カーソルオブジェクトの作成 c = conn.cursor() # 表示 print('\n') # 空行 select = "select * from users" for row in c.execute(select): print(row) print('\n') # 空行 # 終了 a = input("エンターキーで終了します: ") # データベースの切断 conn.close()
簡易検索機能 where_name.py
こちらはユーザー名で検索すると、そのユーザーの情報が表示されるようにしている。
# sqlite3モジュールの読み込み import sqlite3 # データベースに接続 conn = sqlite3.connect("database.sqlite") # カーソルオブジェクトの作成 c = conn.cursor() #名前検索 username = input("検索したい人の名前を入力してください(カタカナ): ") # 表示 print('\n') # 空行 select = "select * from users where name = '%s'" % username for row in c.execute(select): print(row) print('\n') # 空行 # エンターキー input("エンターキーで終了します: ") # データベースの切断 conn.close()
雑感
つくっていると「あの機能もほしい」となってきて、きりがなくなってくる感じだったので、このあたりで完成とする。あとファイルが小分けになっているけど、こういうのはインターフェースまでつくるのが本当なのだろう・・・。ノンプログラマーのためコードもやたらながくなっている。
コメント