pyqt6与sqlite3的微记录

面向对象

1
super()._init__()

super()用来调用父类(基类)的方法,init()是类的构造方法, super().init() 就是调用父类的init方法, 同样可以使用super()去调用父类的其他方法。

pyqt6

命令行

  1. 编译
    1
    Pyinstaller -F -w -i cat.ico main.py
  2. 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). 单词

1). 增

  • [x] 增加一个单词
  • [ ] 并且注意英语不重复
  • [ ] 根据excel表格,往单词本增加一堆单词
  • [ ] 根据相同或不同的数据库,别的单词本合并进选定的单词本

2). 删

  • [x] 在单词概览中删除一个单词,并更新
  • [ ] 在单词卡片中删除一个单词,并更新

3). 改

  • [ ] 在单词概览中点击,进入单词卡片模式,再点击可修改和保存
  • [ ] 在默写三模式中,根据对错情况修改权值

4). 查

  • [ ] 本地查询中英文
  • [ ] 联网查询中英文
  • [x] 查询全部单词

(2). 单词本

1). 增

  • [x] 新建一个单词本
  • [ ] 并且注意单词本名不重复
  • [ ] 根据excel表格,新建一个单词本
  • [ ] 根据相同或不同的数据库,新建一个单词本

2). 删

  • [x] 删除一个单词本

3). 改

  • [ ] 修改单词本名

4). 查

  • [x] 查询所有单词本名字
  • [ ] 查询单词本单词总数
  • [ ] 根据权重,随机选取单词本中单词