Creo que ya lo mencione antes, pero puedes usar
twisted, para hacerlo de forma eficiente.
Otra cosa, es que el código tiene por lo menos 2 errores, que son independientemente del lenguaje.
1.- De la linea 30 a 47 tienes un ciclo que solo se ejecuta una sola vez, ¿entonces para que quieres el ciclo?
2.- Linea 39, tienes un problema de sql injection, no se si así hagas las queries en otros lenguajes, pero es una mala practica en python, en php y cualquier otro lenguaje.
Tengo duda, si esto es para un trabajo o para la escuela. En cualquiera de los dos casos este codigo no parece aceptable para ninguno de los 2 ámbitos.
Si quieres un codigo con explicación te dejo
este link, que es el primer resultado de "socket and threads python" en google.