这几天和上上篇文章写的一样,感觉没做什么。可是,又好像做了些事情。在我混沌的记忆中,我这几天一直都是在刷美剧,看电影。中间我还写了个程序,把中文字幕去掉,留下英文,让我看得更爽。后来看了点书,发现了个PEP8的编程规范,如获至宝。可是,看了看自己写的那些代码。。。一下子也提不起兴致来改。只能说以后写的代码,尽量按照pep8的规范来写了。BTW我发现了pycharm上内嵌有pep8,这样子方便多了。我就不用每次写完代码还得打开命令行来检查了,毕竟编程是为了让生活更方便的不是吗。
说会Flask吧。我一直都有一个想法:把爬虫爬回来的信息在网站中展示出来。一个多月前我学会了爬虫和写数据库。然后我以为要用到API就跑去把API学了,事实是压根没API什么事。反正懒癌发作,一直拖到了现在。我这几天,每天想一点,每天写一点,每天做一点。因为我知道我只要一开始做就会遇到好多坑,我被坑怕了,开始逃避和拖延。不过在这里写东西,就是为了把坑记录下来,以免以后再犯。
我的爬虫用的mysql的数据库,然后我想把flask也换成mysql。可是,工程太大,太复杂,自己也是初学不知道如何操作。后来想起flask用的是sqlalchemy框架,就动了要不就使用sqlalchemy来连接mysql的念头。最终决定是把爬虫的数据库换成我的Flask使用的sqlite数据库。。。。。本来很简单的事情我傻逼的绕了一个圈。
想法总是简单的,但实现起来总是各种麻烦的。
23号,我想直接在原来的diary日记蓝图中插入个页面。可是路由不一样,插入失败。我想了一天都想不明白,还以为蓝图只给我两个路由而已。
from flask import request,render_template, redirect,url_for
from . import diary
from .. import db
from ..models import Diary
from .forms import DiaryForm
from config import config
@diary.route('/diary', methods=['GET', 'POST'])
def blog():
form = DiaryForm()
if form.validate_on_submit():
diary = Diary(title=form.title.data,body=form.body.data,src=form.src.data)
db.session.add(diary)
return redirect('diary')
page = request.args.get('page',1, type=int)
pagination = Diary.query.order_by(Diary.timestamp.desc()).paginate(
page,per_page=20,
error_out=False)
diarys = pagination.items
return render_template('diary.html', form = form,diarys=diarys,pagination=pagination)
@diary.route('/diary/<int:id>', methods=['GET', 'POST'])
def diary(id):
diary = Diary.query.get_or_404(id)
return render_template('diarys.html', diarys=[diary])
我当时就是想再加一个 def douban():上去,然后装饰器那里改成@diary.route('/douban/',methods=['GET','POST'])
现在想想,人只要不动脑子,跟猪没什么分别。
我为了证明自己的想法可以实现,作死的把diary蓝图里的数据信息和models的diary改了,就为了看能不能读取数据库里爬虫爬回来的信息。
好的,成功了!可是,我特么的又得把手动代码改回去。自己没做好版本控制,自己作死。
不过为了整洁美观,我还是写了个新的蓝图。我的爬虫是爬取豆瓣悬疑电影排行榜信息。
写完代码以后开始测试。我其实很害怕开始测试的那一瞬间的,因为不知道有什么错误在等着我。所以每次写完代码,我都有种后背发凉的感觉。
运行服务器吧,好的,无法读取数据库。为什么呢?为什么是空白的?
我花了几个小时,才意识到错误在哪里。
conn = sqlite3.connect('data-dev.sqlite')
#sql = """CREATE TABLE douban( id int primary key not null auto_increment,title text,actor text ,rating char(20))"""
#conn.execute('DROP TABLE IF EXISTS douban')
#conn.execute(''' CREATE TABLE douban
#(id INT PRIMARY KEY ,
#title TEXT, actor TEXT,body TEXT,rating STRING(50),pic TEXT,url TEXT)''')
#连接数据库,查看有没有douban这个表,如果有,删掉然后新建一个
我的爬虫了存在这一段代码,它启动的时候会检查有没有douban这个表,有它就会给我自动删除了重新再建一个。也就是说我Flask服务器里的douban每次都被它删了,然后就找不到了。即使它后来自己建了一个新的也不是我原来Flask建的那个,自然就读不出来了。所以我把这段代码注释掉,运行,一切正常。
火狐截图_2016-10-24T09-30-38.297Z.png接下来要做的就是使用新学的前端知识做下美化,写个简历网页,然后部署上线!最后,找工作!!!
网友评论