pyqt6与sqlite3的微记录
面向对象
1 | super()._init__() |
super()用来调用父类(基类)的方法,init()是类的构造方法, super().init() 就是调用父类的init方法, 同样可以使用super()去调用父类的其他方法。
pyqt6
命令行
- 编译
1
Pyinstaller -F -w -i cat.ico main.py
- ui文件转换成py文件
先进入相应文件夹,然后打开cmd,输入1
python -m PyQt6.uic.pyuic window.ui -o window.py
sqlite3
直接将字符串插入到SQL语句中,这可能会导致SQL注入的问题。SQL注入是一种攻击,攻击者可以通过在输入字段中插入恶意的SQL代码来操纵数据库。
在代码中,如果传入的数据包含SQL语句,那么这些语句将会被执行,这可能会导致数据库中的数据被修改或者删除。
为了防止这种情况,应该使用参数化查询。
错误代码:1
self.cur.execute(f'INSERT INTO {self.name} (id, English, Chinese, Phonetic) VALUES(NULL, {English}, {Chinese}, {Phonetic})')
正确代码:
1
self.cur.execute(f'INSERT INTO {self.name} (id, English, Chinese, Phonetic) VALUES(NULL, ?, ?, ?)', (English, Chinese, Phonetic))
1 | self.cur.execute(f'INSERT INTO {self.name} (id, English, Chinese, Phonetic) VALUES(NULL, ?, ?, ?)', (English, Chinese, Phonetic)) |
英语单词小程序——项目实现任务
做成能用的半成品也不背单词
一. 数据库
(1). 单词
1). 增
- [x] 增加一个单词
- [ ] 并且注意英语不重复
- [ ] 根据excel表格,往单词本增加一堆单词
- [ ] 根据相同或不同的数据库,别的单词本合并进选定的单词本
2). 删
- [x] 在单词概览中删除一个单词,并更新
- [ ] 在单词卡片中删除一个单词,并更新
3). 改
- [ ] 在单词概览中点击,进入单词卡片模式,再点击可修改和保存
- [ ] 在默写三模式中,根据对错情况修改权值
4). 查
- [ ] 本地查询中英文
- [ ] 联网查询中英文
- [x] 查询全部单词
(2). 单词本
1). 增
- [x] 新建一个单词本
- [ ] 并且注意单词本名不重复
- [ ] 根据excel表格,新建一个单词本
- [ ] 根据相同或不同的数据库,新建一个单词本
2). 删
- [x] 删除一个单词本
3). 改
- [ ] 修改单词本名
4). 查
- [x] 查询所有单词本名字
- [ ] 查询单词本单词总数
- [ ] 根据权重,随机选取单词本中单词