テーブルとカラムを表現するには、hashmap< Vector
class Table:
def __init__(self, name, columns):
self.name = name
self.columns = columns
self.rows = []
def insert(self, values):
if len(values) != len(self.columns):
raise ValueError("列の数と値の数が一致しません。")
row = dict(zip(self.columns, values))
self.rows.append(row)
def select_all(self):
return self.rows
def __str__(self):
lines = [" | ".join(self.columns)]
lines.append("-" * len(lines[0]))
for row in self.rows:
lines.append(" | ".join(str(row[col]) for col in self.columns))
return "\n".join(lines)
class Database:
def __init__(self):
self.tables = {}
def create_table(self, name, columns):
if name in self.tables:
raise ValueError(f"テーブル '{name}' は既に存在します。")
self.tables[name] = Table(name, columns)
def insert_into(self, table_name, values):
self.tables[table_name].insert(values)
def select_all(self, table_name):
return self.tables[table_name].select_all()
def show_table(self, table_name):
print(self.tables[table_name])
if __name__ == "__main__":
db = Database()
db.create_table("users", ["id", "name", "email"])
db.insert_into("users", [1, "Alice", "alice@example.com"])
db.insert_into("users", [2, "Bob", "bob@example.com"])
print("📄 users テーブル内容:")
db.show_table("users")
print("\n📋 SELECT * FROM users:")
for row in db.select_all("users"):
print(row)
$ python3 app.py
📄 users テーブル内容:
id | name | email
—————–
1 | Alice | alice@example.com
2 | Bob | bob@example.com
📋 SELECT * FROM users:
{‘id’: 1, ‘name’: ‘Alice’, ’email’: ‘alice@example.com’}
{‘id’: 2, ‘name’: ‘Bob’, ’email’: ‘bob@example.com’}