Beispiel #1
0
class Table:
    """
    テーブルです。
    データ構造を保持して、データの生成を行います。
    """
    def __init__(self, _table_name, **properties):
        self.name = _table_name
        self.properties = Property(properties)

    def __call__(self, name):
        return self.properties.get(name)

    def create(self, count):
        records = [self._assemble(index=index) for index in range(count)]
        self.records = records
        return self

    def to_sql(self):
        if self.records is None:
            print("please run create method")
        else:
            sqls = list()
            for record in self.records:
                sql = (f"INSERT INTO {self.name}" + "(" +
                       ", ".join([str(k)
                                  for k in record.keys()]) + ") VALUES (" +
                       ", ".join([self._str(v)
                                  for v in record.values()]) + ");")
                sqls.append(sql)
            return sqls

    def show_sql(self):
        if self.records is None:
            print('data is not exist')
        else:
            for query in self.to_sql():
                print(query)

    def _assemble(self, index):
        record = dict()
        for name, seed in self.properties.items():
            record[name] = seed.get(index=index)
        return record

    def _str(self, val):
        if type(val) is str:
            return f"'{val}'"
        elif type(val) is int:
            return str(val)
        elif type(val) is datetime.date:
            return f"'{val}'"
        elif type(val) is datetime.datetime:
            return f"'{val}'"
        else:
            return str(val)