gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, width, height, GL_RGB, GL_UNSIGNED_BYTE, pixels)
Use gluBuild2DMipmaps in place of glTexImage2D. It will automatically generate all the smaller versions of the texture.
Example: mipmap.py