I created a web crawler and my app was working without any error before but it was slow, so I decided to make it process two pages in same time using threading, everything working fine until comes to inserting data into database in last line in compare function using mysql connector, it keeps throwing this error
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\site-packages\mysql\connector\cursor_cext.py", line 242, in execute
    raise errors.ProgrammingError("Cursor is not connected", 2055)
mysql.connector.errors.ProgrammingError: 2055: Cursor is not connected
from threading import Thread  
import datetime   
import mysql.connector  
class PostMaker:
    def __init__(self):
        pass
   
    def mysqlconnect(self,):
        db =  mysql.connect(host="localhost",
                        username="root",
                        password="",
                        database ="test"
        )
        cursor =  db.cursor()
        return db , cursor
    
    def createpost(self,page_id,post_name,post_slug,date,post_data):
        db ,cursor = self.mysqlconnect()
        query_1 = f"""INSERT INTO wp_posts (page_id,post_name,post_slug,date,post_data) Values ({page_id},
                "{post_name}","{post_slug}","{date}","{post_data}");"""
        cursor.execute(query_1)
        db.commit()
        post_id = cursor.lastrowid
        return post_id
    
    
       
    def compare(self,new_posts,**kwargs):
        for new_post in new_posts:
            post_slug = kwargs["post_slug"]
            post_name =  "post "+str(new_post)
            
            post_data = kwargs["post_data"]
            date  = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            #  here where the erorr happend
            post_id =  self.createpost(kwargs["page_id"],post_name,post_slug,date,post_data)
          
          
            
    def sub_list(self,id_list):
        sublist = list()
        for i in range(0, len(id_list),4):
            sublist.append(id_list[i:i + 4])
        return sublist  
           
    def page_handler(self,pages):
        for signle_page in pages:
            new_posts , info =  self.page_handler(signle_page)
            new_post =  self.compare(new_posts,**info)
            
    def  run(self):
        big_list=  self.sub_list(self.get_no_scan_data())
        for sub_list in big_list:
            new_thread = Thread(target=self.page_handler,args=(sub_list,))
            new_thread.start()  
 
    