今回作成するもの
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()
雑感
つくっていると「あの機能もほしい」となってきて、きりがなくなってくる感じだったので、このあたりで完成とする。あとファイルが小分けになっているけど、こういうのはインターフェースまでつくるのが本当なのだろう・・・。ノンプログラマーのためコードもやたらながくなっている。

コメント