J'ai jamais touché aux threads en Python, mais tu dois bien avoir un moyen de synchroniser tes threads. Typiquement, tu lock un mutex avant de faire une requête SQL dans un thread, et tu le délock quand tu as fini. Ça obligera les autres threads qui veulent exécuter une requête en même temps à attendre que la thread qui est en train de requêter ait fini son job.
Une autre solution serait d'avoir un thread dédié aux requêtes SQL ; les autres threads pousseraient juste les requêtes à exécuter dans une queue, avec éventuellement un pointeur de fonction qui servirait de callback si tu as besoin du résultat SQL, et ton thread SQL exécute les requêtes de la queue une par une, puis appelle le callback et passe à la requête suivante.