在用flask实现http服务器的时候,只需要指定路由和访问方法,前端的访问就可以获取到,然后触发后端的响应函数,如果后端响应函数用公用的sql connection的时候,可能会导致数据库连接冲突报错,报错内容如下:
AttributeError: 'NoneType' object has no attribute 'read'
参考这篇博客的解释:https://blog.csdn.net/qq_41767116/article/details/119290133
解决方法:避免使用global connect,在每个响应函数里面新建一个数据库连接实体,使用完毕后释放,因此可以封装一个数据库操作的类,init函数建立连接,del函数close连接。
此外,在使用数据库过程中,会有数据库断连的情况,可以封装一个数据库执行函数,在每次调用执行SQL语句时先重连一下:
def execute_sqlorder(self, sql_order, values=None):
""" 封装的SQL执行语句 :param sql_order: :param values: :return: """ try: self.connection.ping(reconnect=True) self.cursor.execute(sql_order, values) self.connection.commit() except: self.connection.rollback() # 出错回滚 print("error") return -1 return 1
标签:数据库,connection,报错,sql,响应函数,多线程,self From: https://www.cnblogs.com/honor260/p/17608310.html