テーブルとカラムを表現するには、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’}