其实大壳的后台管理非常的杂乱,也不是说本身多么复杂,只不过不管是配置文件,还是各个module,甚至是数据存储都在用文件式存储,以至于很多时候花了很多心思优化逻辑还是一塌糊涂。就拿教务处提醒为例,因为一直不想用数据库,所以一直拿文件存储,但是局限性太大了,最近老是出bug,所以决定上手数据库了。
由于服务器上还跑了很多东西,例如apache、jupyter等,所以phpstudy一直挂着,索性拿它提供的工具直接装mysql吧。毕竟一直在学数据库,但真正自己放到项目里还没实践过。
梳理项目结构
不得不吐槽的是,我的主文件里写了一大堆import,结构一塌糊涂,所以今天认真了解了一下python的package机制,把我自己写的模块封装到utils的package下,然后再package里建立
__init__.py
,将需要的模块放到__all__
这个数组变量里,类型都是不带后缀的字符串,这样在主文件里只需要from utils import *
就行,终于整齐了一些
配置mysql
- phpstudy里安装好mysql和可视化界面(我选的是sql_front),其实也用不了几下,你也可以敲命令,都很快。
- 创建自己的数据库,建表,设计结构。
- 哦对了
mysql -uroot -pxxxx
,记一下命令,用来命令行连接数据库。 - 基本配置好后,着手学习
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() - 值得注意的是sql字符串的拼接注意单引号,以及每次查询(如果不频繁的话)就重新连接最后断开,因为隔一段时间不请求就自动断开了。
我发现其实也没啥东西,但我就是弄了两个小时…可能因为一直想做没勇气做吧,虽然不是什么难事,但还是比较满意….考试周加油。