使用pymysql遇到报错:An error occurred: execute() first

原始文本如下:

 try:
	 with connection.cursor() as cursor:
	      # SQL查询语句
	      # 根据 last_id 构建SQL查询语句  
	      if last_id == 0:  
	          # 如果没有读取过数据,从第一条开始  
	          # print(last_id)
	          sql = "SELECT * FROM phrase01 ORDER BY id ASC LIMIT 1"  
	          
	      else:  
	          # 否则,从上次读取的ID的下一行开始  
	          sql = "SELECT * FROM phrase01 WHERE id > %s ORDER BY id ASC LIMIT 1"  
	          cursor.execute(sql, (last_id,))  

运行后会报错:
An error occurred: execute() first
参考https://blog.youkuaiyun.com/itguangzhi/article/details/82381743这篇文章,在第一个sql语句下面补充了内容,解决该问题,以下是修改后代码:

try:
    with connection.cursor() as cursor:
        # SQL查询语句
        # 根据 last_id 构建SQL查询语句 
        if last_id == 0:  
            # 如果没有读取过数据,从第一条开始  
            # print(last_id)
            sql = "SELECT * FROM phrase01 ORDER BY id ASC LIMIT 1"  
            cursor.execute(sql)#注意这句必须要有,否则会报错:An error occurred: execute() first
        else:  
            # 否则,从上次读取的ID的下一行开始  
            sql = "SELECT * FROM phrase01 WHERE id > %s ORDER BY id ASC LIMIT 1"  
            cursor.execute(sql, (last_id,))  

问题解决

Traceback (most recent call last): File "E:\python_learn\python课\1-6章\课题2_1\QuestionDB.py", line 51, in update_question self.cursor.execute("UPDATE question SET %s=%s WHERE question_id=%s", File "E:\dev\python\python3.10.4\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "E:\dev\python\python3.10.4\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "E:\dev\python\python3.10.4\lib\site-packages\pymysql\connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "E:\dev\python\python3.10.4\lib\site-packages\pymysql\connections.py", line 825, in _read_query_result result.read() File "E:\dev\python\python3.10.4\lib\site-packages\pymysql\connections.py", line 1199, in read first_packet = self.connection._read_packet() File "E:\dev\python\python3.10.4\lib\site-packages\pymysql\connections.py", line 775, in _read_packet packet.raise_for_error() File "E:\dev\python\python3.10.4\lib\site-packages\pymysql\protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "E:\dev\python\python3.10.4\lib\site-packages\pymysql\err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''answer'='6' WHERE question_id='2'' at line 1") During handling of the above exception, another exception occurred: Traceback (most recent call last): File "E:\python_learn\python课\1-6章\课题2_1\QuestionDB.py", line 78, in <module> qdb.update_question('2',attributes_dict) File "E:\python_learn\python课\1-6章\课题2_1\QuestionDB.py", line 55, in update_question raise RuntimeError(f"修改属性{attr_name}失败: {str(e)}") RuntimeError: 修改属性answer失败: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''answer'='6' WHERE question_id='2'' at line 1")
最新发布
10-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值