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

这篇具有很好参考价值的文章主要介绍了python使用pysqlcipher3对sqlite数据库进行加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 = None
    session: Session = None

    def __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().session
        results = session.query(User).where(User.username==self.userName_find.get()).all()
        string = ''
        for row in results:
            string = '   '+ '用户ID:' + str(row.userId) + ' 用户名称:' + row.username + ' 电话:' + row.phone
        messagebox.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_user
    UserPage()
    print_hi('系统启动完成')
二、测试
1、运行main

pysqlcipher3加密数据库增删改查,python,sqlite,pysqlcipher3,sqlite加密,python对sqlite加密,pysqlcipher3编译

2、输入数据

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

pysqlcipher3加密数据库增删改查,python,sqlite,pysqlcipher3,sqlite加密,python对sqlite加密,pysqlcipher3编译

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

pysqlcipher3加密数据库增删改查,python,sqlite,pysqlcipher3,sqlite加密,python对sqlite加密,pysqlcipher3编译

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

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

pysqlcipher3加密数据库增删改查,python,sqlite,pysqlcipher3,sqlite加密,python对sqlite加密,pysqlcipher3编译

2、打开数据库

pysqlcipher3加密数据库增删改查,python,sqlite,pysqlcipher3,sqlite加密,python对sqlite加密,pysqlcipher3编译

pysqlcipher3加密数据库增删改查,python,sqlite,pysqlcipher3,sqlite加密,python对sqlite加密,pysqlcipher3编译

pysqlcipher3加密数据库增删改查,python,sqlite,pysqlcipher3,sqlite加密,python对sqlite加密,pysqlcipher3编译

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

四:下载

链接:https://pan.baidu.com/s/1v0bwhFiu4J8kwr5ThafKZw?pwd=5xdi 
提取码:5xdi文章来源地址https://www.toymoban.com/news/detail-849431.html

到了这里,关于python使用pysqlcipher3对sqlite数据库进行加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python数据库模块(sqlite3,SQLite3)

    创建数据库:在控制台sqlite3 name sqlite3.connect(database [,timeout ,other optional arguments]) 打开数据库;如果指数据库存在则返回一个连接对象,如果不存在则会创建一个数据库; connection.cursor() 创建一个cursor; cursor.execute(sql) 执行一个sql语句,该语句可以被参数化; connection.execut

    2024年03月19日
    浏览(56)
  • sqlite数据库基本使用

    sqlite数据库是sql数据库引擎的一种,它不需要任何配置,不需要服务器,是一个轻量级的嵌入式数据库。安装sqlite见文档:SQLite3的安装与使用_sqlite3安装_冒险的梦想家的博客-CSDN博客 下面直接对sqlite3数据库基本命令进行说明: 1.获取sqlite版本的命令 sqlite3 --version 2.数据库创

    2024年02月10日
    浏览(45)
  • uniapp使用sqlite 数据库

    傻瓜式使用方式,按步骤,即可使用。 1.开启sqlite 在项目中manifest.json该文件中配置 2.封装数据库的调用方法 3.创建数据库方式 4.操作数据库正删改查

    2024年02月11日
    浏览(50)
  • Python数据库编程全指南SQLite和MySQL实践

    本文分享自华为云社区《Python数据库编程全指南SQLite和MySQL实践》,作者: 柠檬味拥抱。 首先,我们需要安装Python的数据库驱动程序,以便与SQLite和MySQL进行交互。对于SQLite,Python自带了支持;而对于MySQL,我们需要安装额外的库,如 mysql-connector-python 。 SQLite是一种轻量级的

    2024年03月28日
    浏览(57)
  • Python数据库模块sqlite3操作实例(非常实用)

    当使用Python进行SQLite数据库操作时, sqlite3 模块是一个非常常用和强大的工具。它提供了一系列函数和方法,用于创建、连接、查询和管理数据库。下面是一些常见的用法示例:   sqlite-utils 、 sqlitebiter 和其他类似的库可以提供更高级的功能,包括预编译语句的执行优化和数

    2024年02月13日
    浏览(47)
  • C#如何使用SQLite数据库?

      SQLite是一个轻量级的嵌入式数据库,它的库文件非常小巧,不需要独立的服务器进程或配置。这使得它非常适合在资源受限的环境中使用,如移动设备、嵌入式系统等。与其他数据库管理系统相比,SQLite不需要进行繁琐的配置和管理。它只需要一个文件来存储整个数据库

    2024年02月12日
    浏览(50)
  • Android之SQLite数据库使用

    SQLite是Android系统集成的一个轻量级的数据库。 Android提供了 SQLiteDatabase代表一个数据库 (底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来可通过SQLiteDatabase对象来管理、操作数据库了。 Android为了让我们能够更加方便地管理数据库,

    2024年02月16日
    浏览(45)
  • 学生信息及成绩管理系统(Python+Sqlite)数据库版

    目录 功能模块: 运行功能演示:  具体代码实现过程: 创建sqlite 数据库  Python代码 引入os和sqlite3包: 初始化数据库: 连接数据库: 关闭并提交数据到数据库: 查询数据并显示: 添加并插入数据到数据库: 更新数据到数据库: 删除数据并更新数据库:  导入和导出数据

    2024年02月04日
    浏览(46)
  • Android开发——SQLite数据库的使用

    1、SQLite的特性 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。

    2024年02月15日
    浏览(45)
  • HarmonyOS之sqlite数据库的使用

    从API Version 9开始,鸿蒙开发中sqlite使用新接口@ohos.data.relationalStore 但是  relationalStore在 getRdbStore操作时,在预览模式运行或者远程模拟器运行都会报错,导致无法使用。查了一圈说只有在真机上可以正常使用,因此这里暂且使用 @ohos.data.rdb 二者的接口非常相似,会使用了

    2024年01月17日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包