PyQT 跟我学做密码管理器(4)

本文介绍了如何使用Python3和PyQT5来创建一个密码管理器,重点在于加载SQLite数据库。文章中提到,可以使用sqlite3库或者PyQT5的QtSql模块来操作数据库,并详细讲解了初始化数据库、获取数据、新建、编辑和删除功能的实现。作者还提醒,在删除数据后需要注意更新后续项目的ID。
摘要由CSDN通过智能技术生成

PyQT 跟我学做密码管理器(4) —— 加载数据库

声明:本文借鉴https://blog.csdn.net/bigbennyguo/article/details/50755207 修改而来

前言

借鉴的文章是基于python2+pyqt4,本文是基于python3+pyqt5

环境

编辑器:Sublime Text3

操作系统:win10

Python3

所需要的库:主要是PyQT5,因为加了一点拓展功能,所以还有sqlite3,Image,pyinstaller

pip3 install pyqt5
pip3 install pyqt5-tools
pip3 install sqilte3
pip3 install Image
pip3 install pyinstaller

首先是pyqt5, 这个是我们的主要工具,用来做界面的,pyqt5-tools这个库主要是是在用QT Creator设计好界面之后,将ui文件转化为py文件;

sqlite3这个库可以安也可以不安,因为pyqt5里面有一个模块QtSql,它支持sqlite的操作;
Image这个库主要是用来处理一下图片资源,以及最后程序的图标的
pyinstaller 最后将程序转化为可执行的exe文件

加载数据库

选择的是sqlite3,因为这个轻量级,能够移植
关于sqlite3的操作语句,其实没有必要了解特别多,网上随便搜一下,学点简单的语法就好了,这里不过多说sql语句的问题

首先是导入sqlite3(前面说过,因为是使用的Pyqt,可以不用导入sqlite3,直接使用pyqt自带的QtSql),它两个的数据库语句一样,只是导入方式,还有用法稍微有一点不一样,这里使用的是sqlite3的方法

初始化DB函数initDB

首先判断本地有没有这个DB文件,没有就初始化数据库文件,建表,获取连接句柄
有这个文件,就直接获取数据库句柄
根据数据库句柄,得到数据库中的所有数据

    def initDB(self):
        home = os.path.expanduser('~')
        if '.PasswordManageSystem' not in os.listdir(home):
            os.mkdir(os.path.join(home, '.PasswordManageSystem'))

        dbpath = os.path.join(home, '.PasswordManageSystem', 'PasswordManagement.db')

        if os.path.exists(dbpath):
            self.conn = sqlite3.connect(dbpath)
            self.conn.isolation_level = None
        else:
            self.conn = sqlite3.connect(dbpath)
            self.conn.isolation_level = None
            self.conn.execute('''CREATE TABLE INFO
                        (ID int PRIMARY KEY NOT NULL,
                        WEBSITE char(255),
                        USERNAME char(255),
                        PASSWORD char(255),
                        URL char(255))''')
        cur = self.conn.cursor()
        cur.execute('SELECT * FROM INFO')
        self.displayData = cur.fetchall()
        cur.close()
        self.current_row = len(self.displayData)

然后将这些数据在初始化tableview的时候,将其加载出来

 def initGrid(self):
        self.grid = QTableWidget()
        self.setCentralWidget(self.grid)
        self.grid.setColumnCount(4)
        self.grid.setRowCount(0)
        column_width = [75, 150, 270, 150]
        for column in range(4):
            self.grid.setColumnWidth(column, column_width[column])
        headerlabels = ['Website', 'Username', 'Password', 'Url']
        self.grid.setHor
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值