当前位置:首页 > 编程笔记 > 正文
已解决

python使用pysqlcipher3对sqlite数据库进行加密

来自网友在路上 156856提问 提问时间:2023-11-08 08:51:47阅读次数: 56

最佳答案 问答题库568位专家为你答疑解惑

python对很多项目都需要对sqlite数据库的数据进行加密,最流行的加密方式是使用pysqlcipher3,当前使用的python版本为3.7,本博文是直接使用pysqlcipher3在项目上的应用,使用的是已编译好的pysqlcipher3包,如果你需要pysqlcipher3,在后面有下载地址,下载后,可以直接使用,不需要再进行编译

界面代码如下

一、相关代码
1、连接sqlite数据库文件配置
DB_TYPE_MYSQL = 'MYSQL'
DB_TYPE_SQLITE = 'SQLITE'DB_TYPE = DB_TYPE_SQLITE  # 当前数据类型# SQLITE_URL = 'sqlite:///D:/dd/aippw.db3'  #sqlite连接地址
# SQLITE_URL = 'sqlite+pysqlcipher://:123123@/D:/dd/mydb.db3'  #sqlite连接地址,文件生成在d:\dd\目录
SQLITE_URL = 'sqlite+pysqlcipher://:123123@/mydb.db3'  #sqlite连接地址,文件生成在当前目录
2、连接数据库session
class SqlHelper:engine: Engine = Nonesession: Session = Nonedef __init__(self):Session = sessionManager.get_session(db_type=Constant.DB_TYPE)self.session = Session()self.engine = sessionManager.get_engine(db_type=Constant.DB_TYPE)def add(self, obj):self.session.add(obj)self.session.commit()def delete(self, obj):self.session.delete(obj)self.session.commit()def update(self, obj):self.session.merge(obj)self.session.commit()def upsert(self, model):self._upsert(model)self.session.commit()def query(self, model):return self.session.query(model)
3、界面代码
class UserPage(object):def __init__(self):self.root = tkinter.Tk()self.root.title("用户管理")Utils.set_screen(self.root, 450, 200)self.page = tkinter.Frame(self.root, width=850, height=650)self.page.pack(side='top')self.user = User()self.user.userId = tkinter.StringVar()self.user.username = tkinter.StringVar()self.user.phone = tkinter.StringVar()self.msg = tkinter.StringVar()self.userName_find = tkinter.StringVar()self.userName_find.set('请输入用户名称')tkinter.Label(self.page, text='用户名称:', font=('Terminal', 12)).grid(row=1, column=1)tkinter.Entry(self.page, textvariable=self.user.username, width=20).grid(row=1, column=2, columnspan=2)tkinter.Label(self.page, text='用户电话:', font=('Terminal', 12)).grid(row=2, column=1, pady=5)tkinter.Entry(self.page, textvariable=self.user.phone, width=20).grid(row=2, column=2, columnspan=2)tkinter.Button(self.page, text='保存', font=('Terminal', 12), command=self.save).grid(row=3, column=2,)tkinter.Entry(self.page, textvariable=self.userName_find, width=20).grid(row=5, column=1, columnspan=4,pady=30)tkinter.Button(self.page, text='查询', font=('Terminal', 12), command=self.get_User).grid(row=5, column=4,columnspan=1)tkinter.Label(self.page, textvariable=self.msg, font=('Terminal', 12)).grid(row=6, column=1)self.root.mainloop()# 查询基础配置def get_User(self):session = SqlHelper().sessionresults = session.query(User).where(User.username==self.userName_find.get()).all()string = ''for row in results:string = '   '+ '用户ID:' + str(row.userId) + ' 用户名称:' + row.username + ' 电话:' + row.phonemessagebox.showinfo('提示信息', string)session.close()def save(self):sql_helper = SqlHelper()saveUser = User()saveUser.username = self.user.username.get();saveUser.phone = self.user.phone.get()sql_helper.update(saveUser)messagebox.showinfo('提示信息','保存成功')
4、main方法
if __name__ == '__main__':print('sqlalchemy版本:', sqlalchemy.__version__)Utils.init_sys_userUserPage()print_hi('系统启动完成')
二、测试
1、运行main

2、输入数据

这个时候,会在工程目录生,mydb.db3的sqlite文件,此文件已加密,密码为123123,后面会用

3、查询,在查询框,输入 张三,正确反回数据

三、用工具查看mydb.db3数据库文件

1、安装DB.Browser.for.SQLite-3.12.2-win64.msi这个软件(最后下载地址里面有),安装后桌面上有 DB Browser (SQLCipher) 这个图标,双击打开

2、打开数据库

里面有,我们刚刚创建的表,以及里面插入了数据

四:下载

链接:https://pan.baidu.com/s/1v0bwhFiu4J8kwr5ThafKZw?pwd=5xdi 
提取码:5xdi

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"python使用pysqlcipher3对sqlite数据库进行加密":http://eshow365.cn/6-35200-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!