其实大壳的后台管理非常的杂乱,也不是说本身多么复杂,只不过不管是配置文件,还是各个module,甚至是数据存储都在用文件式存储,以至于很多时候花了很多心思优化逻辑还是一塌糊涂。就拿教务处提醒为例,因为一直不想用数据库,所以一直拿文件存储,但是局限性太大了,最近老是出bug,所以决定上手数据库了。
由于服务器上还跑了很多东西,例如apache、jupyter等,所以phpstudy一直挂着,索性拿它提供的工具直接装mysql吧。毕竟一直在学数据库,但真正自己放到项目里还没实践过。

梳理项目结构

不得不吐槽的是,我的主文件里写了一大堆import,结构一塌糊涂,所以今天认真了解了一下python的package机制,把我自己写的模块封装到utils的package下,然后再package里建立__init__.py,将需要的模块放到__all__这个数组变量里,类型都是不带后缀的字符串,这样在主文件里只需要from utils import *就行,终于整齐了一些

配置mysql

  1. phpstudy里安装好mysql和可视化界面(我选的是sql_front),其实也用不了几下,你也可以敲命令,都很快。
  2. 创建自己的数据库,建表,设计结构。
  3. 哦对了mysql -uroot -pxxxx,记一下命令,用来命令行连接数据库。
  4. 基本配置好后,着手学习pymysql来连接python和mysql,很简单,这里直接放代码
    # 连接MySQL获取游标
    db = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='xxxx',
    db='xxx',
    charset='utf8')
    cur = db.cursor()
    sql_select = "select count(*) from tablename where title = '"+title+"';"
    cur.execute(sql_select)
    result = cur.fetchone()
    if result[0] > 0: # 如果存在就返回0
    return 0
    else:
    sql_insert = "insert into tablename values(null,"+ "'" + str(date) + "','" + title + "','" + link + "');" # id设置了自增
    try:
    cur.execute(sql_insert)
    db.commit() # 事务提交
    except:
    db.rollback() # 回滚
    return 1
    cur.close()
    db.close()
  5. 值得注意的是sql字符串的拼接注意单引号,以及每次查询(如果不频繁的话)就重新连接最后断开,因为隔一段时间不请求就自动断开了。

我发现其实也没啥东西,但我就是弄了两个小时…可能因为一直想做没勇气做吧,虽然不是什么难事,但还是比较满意….考试周加油。