無法添加新聞

無法添加新聞

相关代码:報錯

'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

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!应该使用游标cursor.fetchone()[0] 获取数据,并不是con 

https://img1.sycdn.imooc.com//climg/62c8e629090efa7106280264.jpg
祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师