使用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,))  

问题解决

(.venv) PS D:\pycharm\daima\fg\login_reg> python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, login, sessions Running migrations: Traceback (most recent call last): File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\utils.py", line 82, in _execute return self.cursor.execute(sql) ^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 71, in execute return self.cursor.execute(query, args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\connections.py", line 825, in _read_query_result result.read() File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\connections.py", line 775, in _read_packet packet.raise_for_error() File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "D:\pycharm\daima\fg\.venv\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 '(6) NOT NULL)' at line 1") The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\migrations\recorder.py", line 67, in ensure_schema editor.create_model(self.Migration) File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\base\schema.py", line 307, in create_model self.execute(sql, params or None) File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\base\schema.py", line 137, in execute cursor.execute(sql, params) File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\utils.py", line 99, in execute return super().execute(sql, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\utils.py", line 67, in execute return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers return executor(sql, params, many, context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\utils.py", line 80, in _execute with self.db.wrap_database_errors: File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\utils.py", line 89, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\utils.py", line 82, in _execute return self.cursor.execute(sql) ^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 71, in execute return self.cursor.execute(query, args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\connections.py", line 563, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\connections.py", line 825, in _read_query_result result.read() File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\connections.py", line 1199, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\connections.py", line 775, in _read_packet packet.raise_for_error() File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) File "D:\pycharm\daima\fg\.venv\Lib\site-packages\pymysql\err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) django.db.utils.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 '(6) NOT NULL)' at line 1") During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\pycharm\daima\fg\login_reg\manage.py", line 21, in <module> main() File "D:\pycharm\daima\fg\login_reg\manage.py", line 17, in main execute_from_command_line(sys.argv) File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line utility.execute() File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\core\management\__init__.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\core\management\base.py", line 323, in run_from_argv self.execute(*args, **cmd_options) File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\core\management\base.py", line 364, in execute output = self.handle(*args, **options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\core\management\base.py", line 83, in wrapped res = handle_func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\core\management\commands\migrate.py", line 232, in handle post_migrate_state = executor.migrate( ^^^^^^^^^^^^^^^^^ File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\migrations\executor.py", line 91, in migrate self.recorder.ensure_schema() File "D:\pycharm\daima\fg\.venv\Lib\site-packages\django\db\migrations\recorder.py", line 69, in ensure_schema raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc) django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, "You hav e an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1"))
最新发布
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值