项目大概简介就是使用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),之后正常了
不过还是想吐槽下这个异常还是自己太粗心了。