peewee.ProgrammingError: (1146, "Table 'test.lagou_position_info' doesn't exist")

项目大概简介就是使用scrapy爬取所有拉勾网上技术类职位的信息,并存储到mysql,然后都说peewee是非常轻量的ORM框架,所以我就拿来试下,然后就踩坑了。

D:\lagou\venv\Scripts\python.exe D:/lagou/lagou/run.py
Traceback (most recent call last):
  File "E:\Python36\lib\site-packages\peewee.py", line 3830, in execute_sql
    cursor.execute(sql, params or ())
  File "E:\Python36\lib\site-packages\pymysql\cursors.py", line 165, in execute
    result = self._query(query)
  File "E:\Python36\lib\site-packages\pymysql\cursors.py", line 321, in _query
    conn.query(q)
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 860, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 1061, in _read_query_result
    result.read()
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 1349, in read
    first_packet = self.connection._read_packet()
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 1018, in _read_packet
    packet.check_error()
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 384, in check_error
    err.raise_mysql_exception(self._data)
  File "E:\Python36\lib\site-packages\pymysql\err.py", line 107, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1146, "Table 'test.lagou_position_info' doesn't exist")

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:/lagou/lagou/run.py", line 6, in 
    mysqldb.db.create_tables(lagou_position_info, safe=True)
  File "E:\Python36\lib\site-packages\peewee.py", line 3917, in create_tables
    create_model_tables(models, fail_silently=safe)
  File "E:\Python36\lib\site-packages\peewee.py", line 5355, in create_model_tables
    for m in sort_models_topologically(models):
  File "E:\Python36\lib\site-packages\peewee.py", line 201, in sort_models_topologically
    models = set(models)
  File "E:\Python36\lib\site-packages\peewee.py", line 4924, in __iter__
    return iter(self.select())
  File "E:\Python36\lib\site-packages\peewee.py", line 3281, in __iter__
    return iter(self.execute())
  File "E:\Python36\lib\site-packages\peewee.py", line 3274, in execute
    self._qr = ResultWrapper(model_class, self._execute(), query_meta)
  File "E:\Python36\lib\site-packages\peewee.py", line 2939, in _execute
    return self.database.execute_sql(sql, params, self.require_commit)
  File "E:\Python36\lib\site-packages\peewee.py", line 3837, in execute_sql
    self.commit()
  File "E:\Python36\lib\site-packages\peewee.py", line 3656, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
  File "E:\Python36\lib\site-packages\peewee.py", line 135, in reraise
    raise value.with_traceback(tb)
  File "E:\Python36\lib\site-packages\peewee.py", line 3830, in execute_sql
    cursor.execute(sql, params or ())
  File "E:\Python36\lib\site-packages\pymysql\cursors.py", line 165, in execute
    result = self._query(query)
  File "E:\Python36\lib\site-packages\pymysql\cursors.py", line 321, in _query
    conn.query(q)
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 860, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 1061, in _read_query_result
    result.read()
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 1349, in read
    first_packet = self.connection._read_packet()
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 1018, in _read_packet
    packet.check_error()
  File "E:\Python36\lib\site-packages\pymysql\connections.py", line 384, in check_error
    err.raise_mysql_exception(self._data)
  File "E:\Python36\lib\site-packages\pymysql\err.py", line 107, in raise_mysql_exception
    raise errorclass(errno, errval)
peewee.ProgrammingError: (1146, "Table 'test.lagou_position_info' doesn't exist")

Process finished with exit code 1

完整的traceback如上,但是看不出来什么,唯一觉得有用的信息就是说”Table ‘test.lagou_position_info’ doesn’t exist”,但是我本身用的就是db.create_tables(lagou_position_info, safe=True),为的就是自动创建表结构,结果还是来提醒我表没有创建。

回头翻了下官方的实例:

db.create_tables([Person, Pet])

好吧,其实参数是个list,而我直接传入了一个model。。。
改成db.create_tables([lagou_position_info], safe=True),之后正常了
不过还是想吐槽下这个异常还是自己太粗心了。

你可能感兴趣的:(Python)