被虐的不行不行的,根本没有心情实时写探索记录。简要总结一下吧

感觉快要崩溃了

根据sqlite3的相关材料,模仿了例子,做出来一个简单MVP,结果当将程序与数据库连接时一直出错,不知是什么原因。已经连续做了三天,没有丝毫进展。感觉自己遇到了本次学习中最大的难题。

使用flask模板渲染网页

在上一周的作业中,一直看不懂templates的文档,最后放弃了这一方法,转而使用了内联框架标签,将查询、历史和帮助三个按钮需要显示的内容通过form中的target属性,展现到iframe所处的位置。

参考的还是这个教程。https://www.tutorialspoint.com/flask/flask_sqlite.htm ,我从第一页开始看起,做到templates这一章的时候,就大致搞懂了用模板渲染网页中的关键步骤。总之,当采用render_templates的时候,通过设置一个templates文件夹和一个网页html文件,就能够便捷地通过模板对网页进行渲染。主要步骤有:

  • 在同级目录中新建文件夹templates
  • templates文件中新建index.html文件,作为模板渲染的基础网页。
  • 在index.html中,将需要渲染的部分文件格式修改为如下格式 ```
+ 在主程序****.py中的使用方式:
``` return render_templates('index.html',result = result)

Using SQLite3 with flask

根据官方文档和教程,很快模仿做了一个简单的sqlite3模型。我着实高兴了一阵子,原来这周的任务不难嘛。当接着往下做的时候,才发现,原来难点在于sqlite3 with flask,就是将sqlite3与flask框架连接起来。从周一一直折腾到周五,每天少说也有两个小时,却始终没有进展,结果是,好几个例子仍然一直运行成功,我还不知道是为什么,感觉变成好痛苦啊,我有开始怀疑人生了,就像变成了悲观主义者一样,或者抑郁一样,忧心忡忡。

大哭了一次以后,静下心分析原因:我没有完全理解sqlite3中关键概念和定义,结果做例子的时候,不知道自己所处理的变量的含义,导致只能照抄,却一点都不明白。后来,我按照官方文档中的例子又做了一遍,教程也重新试运行了一遍,结果思路开始慢慢清晰起来了,但是仍然不能彻底解决问题。

我在周五晚上的时候,想着放弃这周的作业,先去做上周的模板渲染网页。没想到的是,周六一天的探索却顺利起来了,于是,在周六用了大约四五个小时,就把模板渲染网页,sqlite3与flask的连接中的基本问题全部解决了。关键问题有:

  • 新建数据库database和初始化数据表table,定义table的结构。将这两部分作为一个初始化的文件单独运行。(数据表一定要初始化,等初始化完成以后,在主程序中就可以对数据表进行插入、修改和查询等操作了。)这就是我整个探索过程中踩到的最大的坑:我在主程序中创建数据库,定义数据表,当运行主程序的时候,报错信息显示:这个数据表已经存在。我就卡在这个问题上,卡了五天。
  • 对于数据表的操作,插入和更新,可以采用官方文档中给的例子,直接套过来,就比较省事了。Using SQLite with Flask ,http://flask.pocoo.org/docs/0.12/patterns/sqlite3/ 。看不懂官方文档,一定要反复看,直接服用官方文档中的数据库操作的关键功能,是非常高效的。这个文档中的例子基本都能够应用到主程序中。

未解决的问题

  • 在作业要求中,查询和更新数据库两个按钮都可以调用同一个文本输入框的内容。由于我对于request的post和get,redirect,url_for等的理解还不到位,对这个问题没有思路。所以,我就将自己的任务难度降低,分为两个框来进行数据的输入和传递。这样就暂时避开了我不太理解的知识点。后来,我尝试着通过判断用户输入内容 格式,并使用条件语句进行处理时,一直不能正确实现这个功能,下周要接着探索解决这个问题。
  • 对于session、cookie、SQLAlchemy等内容,心有余而力不足啊。
  • 页面很丑陋。以后有机会应该学学前端页面设计。
  • 我知道,我的程序很乱,很乱,很乱。后面一周,我要理一理这个程序的思路,像很多优秀同学学习,做个更好的程序文件的整理,尤其是文件目录和配置等。

——————————————————————————————————————————————

后续任务2017-02-20

  • 如果上次查询是在五分钟内,那么直接从数据库中读取;否则,从API读取并更新到数据库。
  • 用一个文本输入框将数据传递给主程序,若点击查询,则查询数据;若点击更新,则将输入的内容修改掉数据库中的内容。
  • 历史记录中,要将查询数据实时显示到分钟。
  • 将主程序与初始化程序等理清楚。

results matching ""

    No results matching ""