def __init__(self, table_name, metadata, *args): validator.exam_table_name(table_name) self.table_name = table_name self.metadata = metadata self.all = list() self.column_names = list() self.primary_key_columns = list() self.pickletype_columns = list() for column in args: column.bind_table(self) # 将column与Table绑定 self.all.append(column) self.column_names.append(column.column_name) if column.primary_key: # 定位PRIMARY KEY的列 self.primary_key_columns.append(column.column_name) if column.is_pickletype: # 定位PICKLETYPE的列 self.pickletype_columns.append(column.column_name) self.c = ColumnCollection(*self.all) self.metadata._add_table(self) self.create_table_sql = CreateTable(self).sql
def __init__(self, index_name, metadata, args, table_name=None, unique=False, skip_validate=False): if not skip_validate: validator.exam_table_name(index_name) self.index_name = index_name self.metadata = metadata if table_name: self.table_name = str(table_name) else: self.table_name = None self.unique = unique self.params = list() if self.unique: self.CREATE_clause = "CREATE UNIQUE INDEX %s" % self.index_name else: self.CREATE_clause = "CREATE INDEX %s" % self.index_name for i in args: if isinstance(i, Column): # column self.params.append("%s ASC" % i.column_name) elif isinstance(i, _str_type): # string self.params.append(i.split(".")[-1]) # use column_name only else: # _SQL_PARAM self.params.append("%s %s" % (i.column_name, i.sql_name)) try: # see if table_name is constant in all argument if self.table_name: if self.table_name != i.table_name: raise IndexObjectError("Table name are not unique!") else: self.table_name = i.table_name except: pass self.ON_TABLE_clause = "ON %s" % self.table_name self.COLUMN_clause = "\t" + ",\n\t".join(self.params) self.metadata._add_index(self)