code: def create_table(self, table_name, primary_id=None, primary_type=None):
          
          assert not isinstance(primary_type, six.string_types), \
              'Text-based primary_type support is dropped, use db.types.'
          table_name = normalize_table_name(table_name)
          with self.lock:
              if table_name not in self._tables:
                  self._tables[table_name] = Table(self, table_name,
                                                   primary_id=primary_id,
                                                   primary_type=primary_type,
                                                   auto_create=True)
              return self._tables.get(table_name)
docs: Create a new table.
  
          Either loads a table or creates it if it doesn't exist yet. You can
          define the name and type of the primary key field, if a new table is to
          be created. The default is to create an auto-incrementing integer,
          ``id``. You can also set the primary key to be a string or big integer.
          The caller will be responsible for the uniqueness of ``primary_id`` if
          it is defined as a text type.
  
          Returns a :py:class:`Table <dataset.Table>` instance.
          ::
  
              table = db.create_table('population')
  
              # custom id and type
              table2 = db.create_table('population2', 'age')
              table3 = db.create_table('population3',
                                       primary_id='city',
                                       primary_type=db.types.text)
              # custom length of String
              table4 = db.create_table('population4',
                                       primary_id='city',
                                       primary_type=db.types.string(25))
              # no primary key
              table5 = db.create_table('population5',
                                       primary_id=False)