'Creates a new table with the given fields.
The given list of fields must contain values returned from the field() function.'

def create(self, table, fields=[], encoding='utf-8', **kwargs):

    if (table in self.tables):
        raise TableError(("table    '%s'    already    exists" % ((self.name + '.') + table)))
    if table.startswith(XML_HEADER):
        return parse_xml(self, table, table=kwargs.get('name'), field=kwargs.get('field', (lambda s: s.replace('.', '_'))))
    encoding = (((self.type == MYSQL) and ('    default    charset=' + encoding.replace('utf-8', 'utf8'))) or '')
    (fields, indices) = zip(*[self._field_SQL(table, f) for f in fields])
    self.execute(('create    table    `%s`    (%s)%s;' % (table, ',    '.join(fields), encoding)))
    for index in indices:
        if (index is not None):
            self.execute(index, commit=True)
    self.tables[table] = None
    return self.tables[table]
