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

9335 ワード

プロジェクトの概要は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)、その後は正常でしたが、この異常にツッコミを入れたいのは自分があまりにも不注意です.