無法添加新聞
相关代码:報錯
'MySQLConnection' object has no attribute 'fetchone' Traceback (most recent call last): File "C:\Users\user\Desktop\python\pythonProject\vega\app.py", line 55, in <module> user_id = __user_service.search_user_id(username) File "C:\Users\user\Desktop\python\pythonProject\vega\service\user_service.py", line 45, in search_user_id user_id = self.__user_dao.search_user_id(username) File "C:\Users\user\Desktop\python\pythonProject\vega\db\user_dao.py", line 149, in search_user_id con.close() File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\mysql\connector\pooling.py", line 117, in close cnx.reset_session() File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\mysql\connector\connection.py", line 709, in reset_session raise errors.OperationalError("MySQL Connection not available.") mysql.connector.errors.OperationalError: MySQL Connection not available.
相关代码:app
if choice == '1': os.system('cls') # 輸入新聞名. 獲取user_id, 打印t_type, 設置多項參數 title = input('\n\t新聞標題;') user_id = __user_service.search_user_id(username) type = __type_service.search_all_type() for index in range(len(type)): one = type[index] print(Fore.LIGHTBLUE_EX,'\n\t{}.{}'.format(index+1, one[1])) print(Style.RESET_ALL) opt = input('\n\t類型編號;') type_id = type[int(opt) - 1][0] # TODO 新聞正文內容 content_id = 100 is_top = input('\n\t置頂級別(0-5):') is_commit = input('\n\t是否提交(Y/N):') if is_commit == 'Y' or 'y': __news_service.insert(title, user_id, type_id,content_id, is_top) print('\n\t保存成功(3秒後自動返回)') time.sleep(3)
相关代码:user_service
# 根據用戶名 查詢 user_id def search_user_id(self, username): user_id = self.__user_dao.search_user_id(username) return user_id
相关代码:user_dao
# 根據用戶名 查詢 user_id def search_user_id(self, username): try: con = pool.get_connection() cursor = con.cursor() sql = 'SELECT id FROM t_user WHERE username=%s' cursor.execute(sql, [username]) user_id = con.fetchone()[0] # return tuple return user_id except Exception as e: print(e) finally: if 'con' in dir(): con.close()
尝试过的解决方式:
查詢此報錯
mysql.connector.errors.OperationalError: MySQL Connection not available.
可能原因:用游标拿完数据之后,再函数返回值之前,将游标关闭,出现了如上的错误。
可是我是先回傳值, 再關閉連接, 並沒有犯以上錯誤 -> 我只查到了Operational error 繼承自 database Error
6
收起
正在回答
1回答
同学,你好!应该使用游标cursor.fetchone()[0] 获取数据,并不是con
祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星