Python操作Sqlite的简单封装

news/2024/4/28 7:14:27/文章来源:https://blog.csdn.net/weixin_43721000/article/details/137019125

文章目录

  • 一、安装依赖
  • 二、配置文件
  • 三、实现类


一、安装依赖

pip install numpy

二、配置文件

utils.config.py


############### 233 SQLITE Configuration ###############
SQLITE_PATH = './mysqlite.db'

三、实现类

utils.PostGreOp.py

# encoding: utf-8import json
import sqlite3
import numpy as np
from utils import config as cfclass SqliteOp(object):def __init__(self, db_path=cf.SQLITE_PATH):print(f"db_path: {db_path}")self.db_path = db_path# conn = sqlite3.connect('./test.db')# 增删改def operate(self, sql):db = sqlite3.connect(self.db_path)cur = db.cursor()try:# 执行sql语句cur.execute(sql)op_id = cur.lastrowidcur.close()# 提交到数据库执行db.commit()except Exception as e:print(e)op_id = Nonecur.close()# Rollback in case there is any errordb.rollback()# 关闭数据库连接db.close()return op_id# 查def select(self, sql):db = sqlite3.connect(self.db_path)cur = db.cursor()results = Nonetry:# 执行sql语句cur.execute(sql)# 获取所有记录列表results = cur.fetchall()# print(results)except Exception as e:print(e)# 关闭数据库连接db.close()return results@classmethoddef escape_str(cls, text):'''string类型数据导入时有可能出现单双引号等需要转义的字段,也可能出现nan这样的字段,需要先处理一下:return:'''if cls.isNaNo(text):return 'null'else:return "'" + json.dumps(str(text), ensure_ascii=False)[1:-1] + "'"@classmethoddef escape_num(cls, text):'''转一下整数,报错的话说明传入的不是数字,有sql注入风险:return:'''if str(text) == '0':return '0'elif cls.isNaNo(text):return 'null'else:# return json.dumps(str(text), ensure_ascii=False)try:int(text)return str(text)except Exception as e:raise Exception('传入不是数字,有sql注入风险')# if cls.isNaNo(text):#     return 'null'# else:#     return json.dumps(str(text), ensure_ascii=False)@classmethoddef isNaNo(cls, sth):'''NaN、None或者空字符串返回True,其他情况返回False'''if not sth:return Trueif isinstance(sth, float):if np.isnan(sth):return Truereturn Falseif __name__ == '__main__':# 指定目录下没有数据库的话会自动创建sqlt = SqliteOp(db_path='./mysqlite.db')# 查询当前数据库下的所有表res = sqlt.select(f'''SELECT name FROM sqlite_master WHERE type='table';''')print(res)# []

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1026987.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony实战开发-滑动容器组件Swiper的使用

介绍 本篇Codelab主要介绍了滑动容器组件Swiper的几种常见的应用场景,包括顶部导航、轮播图以及视频滑动播放。 相关概念 Swiper:滑动容器,提供子组件切换滑动的能力。Stack:堆叠容器,子组件按照顺序依次入栈&#x…

训练svm并部署树莓派

训练svm并部署树莓派 开发环境1. 准备数据集2. 训练模型3. 部署模型开发环境 vscode python 3.8 用到的库: scikit-learn==1.3.2 pickle torch pandas matplotlib 1. 准备数据集 数据为xls文件,如下格式 2. 训练模型 文件结构 执行训练 python代码 import pickle &…

【计算机网络】IP 协议

网络层IP协议 一、认识 IP 地址二、IP 协议报头格式三、网段划分1. 初识子网划分2. 理解子网划分3. 子网掩码4. 特殊的 IP 地址5. IP 地址的数量限制6. 私有 IP 地址和公网 IP 地址7. 理解全球网络(1)理解公网(2)理解私网&#xf…

Git 常用命令速查

Git 是一个分布式版本控制系统&#xff0c;用于管理代码和其他文件。它允许您跟踪代码的更改&#xff0c;并在必要时回滚到以前的版本。 本文将介绍一些 Git 常用命令&#xff0c;帮助您快速上手 Git。 初始化 Git 仓库 git init添加文件到暂存区 git add <file_name>…

【正版特惠】IDM 永久授权 优惠低至109元!

尽管小编有修改版IDM&#xff0c;但是由于软件太好用了&#xff0c;很多同学干脆就直接购买了正版&#xff0c;现在正版也不贵&#xff0c;并且授权码绑定自己的邮箱&#xff0c;直接官方下载激活&#xff0c;无需其他的绿化修改之类的操作&#xff0c;不喜欢那么麻烦的&#x…

简易指南:国内ip切换手机软件怎么弄

在网络访问受到地域限制的情况下&#xff0c;使用国内IP切换手机软件可以帮助用户轻松访问被屏蔽的内容&#xff0c;扩展网络体验。以下是虎观代理小二分享的使用国内IP切换手机软件的简易指南。并提供一些注意事项。 如何在手机上使用国内IP切换软件 步骤一&#xff1a;选择I…

16.JRE和JDK

程序员在编写代码的时候其实是需要一些环境&#xff0c;例如我们之前写的HelloWorld。我们需要的东西有JVM、核心类库、开发工具。 1、JVM&#xff08;Java Virtual Machine&#xff09;&#xff1a;Java虚拟机&#xff0c;真正运行Java程序的地方。没有虚拟机&#xff0c;代码…

R使用netmeta程序包实现对罕见事件(Rare events)的网状meta分析

在进行网状meta分析过程中&#xff0c;一些试验经常会出现罕见事件&#xff08;Rare event&#xff09;。尤其是在安全性评价中&#xff0c;由于一些不良事件发生率低、样本量不充足&#xff0c;导致试验组和对照组的事件发生例数少&#xff0c;甚至出现0事件。针对出现0事件的…

【任职资格】某大型制造型企业任职资格体系项目纪实

该企业以业绩、责任、能力为导向&#xff0c;确定了分层分类的整体薪酬模式&#xff0c;但是每一名员工到底应该拿多少工资&#xff0c;同一个岗位的人员是否应该拿同样的工资是管理人员比较头疼的事情。华恒智信顾问认为&#xff0c;通过任职资格评价能实现真正的人岗匹配&…

java注解的实现原理

首先我们常用的注解是通过元注解去编写的&#xff0c; 比如&#xff1a; 元注解有Target 用来限定目标注解所能标注的java结构&#xff0c;比如标注方法&#xff0c;标注类&#xff1b; Retention则用来标注当前注解的生命周期&#xff1b;比如source&#xff0c;class&…

【CSS】CSS基础1(CSS基本介绍+常见样式设计)

目录 什么是CSS&#xff1f; 语法规范 常见样式 例子 代码展示 什么是CSS&#xff1f; 点击以下链接了解更多&#xff1a; ​​​​​​​ ​​​​​https://baike.baidu.com/item/%E5%B1%82%E5%8F%A0%E6%A0%B7%E5%BC%8F%E8%A1%A8/524980?fromModulelemma_inlink(英文…

项目四-图书管理系统

1.创建项目 流程与之前的项目一致&#xff0c;不再进行赘述。 2.需求定义 需求: 1. 登录: ⽤⼾输⼊账号,密码完成登录功能 2. 列表展⽰: 展⽰图书 3.前端界面测试 无法启动&#xff01;&#xff01;&#xff01;--->记得加入mysql相关操作记得在yml进行配置 配置后启动…

java常用IO流功能——转换流,打印流,数据流,序列化流概述

前言&#xff1a; 整理下IO流的相关知识点笔记&#xff0c;打好基础&#xff0c;daydayup!!! 之前整理了下 字节流&#xff0c;字符流和缓冲流&#xff0c;有需要的可以看这里 java常用应用程序编程接口&#xff08;API&#xff09;——IO流概述及字节流的使用 java常用IO流功…

Spring:面试八股

文章目录 参考Spring模块CoreContainerAOP 参考 JavaGuide Spring模块 CoreContainer Spring框架的核心模块&#xff0c;主要提供IoC依赖注入功能的支持。内含四个子模块&#xff1a; Core&#xff1a;基本的核心工具类。Beans&#xff1a;提供对bean的创建、配置、管理功能…

❤ leetCode简易题1-两数之和、简易2--回文数判断、简易14-最长公共前缀

❤ leetCode简易题1-两数之和、简易题14- 最长公共前缀 1、简易1-两数之和 ① 题目要求 数字A B target&#xff0c;以target为求和结果&#xff0c;找出数组中符合的A、B数字下标。 第一次做的时候完全脑子一片蒙&#xff0c;随后认真看了看题目发现是发现找符合target和…

论文导读 | 漫谈编辑问题

摘要 本文着眼于深度学习模型在各个领域中的编辑问题&#xff0c;从通用的分类器编辑算法切入&#xff0c;展开介绍针对扩散模型的图像编辑问题和针对大语言模型的知识编辑问题&#xff0c;希望能为读者关于“修改模型的行为”这一话题提供一些启发。 引言 当我们训练好一个…

【问题分析】InputDispatcher无焦点窗口ANR问题【Android 14】

1 问题描述 Monkey跑出的无焦点窗口的ANR问题。 特点&#xff1a; 1&#xff09;、上层WMS有焦点窗口&#xff0c;为Launcher。 2&#xff09;、native层InputDispacher无焦点窗口&#xff0c;上层为”recents_animation_input_consumer“请求了焦点&#xff0c;但是”rece…

高防DNS和高防IP一样吗?

高防DNS和高防IP在功能和目标上有所不同&#xff0c;因此它们并不完全相同。 高防DNS是一种针对DNS服务的防护措施&#xff0c;旨在保护域名解析免受DDoS攻击等网络威胁的影响。它利用高防服务器和高防机房的资源&#xff0c;对无效流量进行清洗&#xff0c;保障DNS服务器的安…

零基础学习挖掘PHP网站漏洞

教程介绍 本套课程&#xff0c;分为三个阶段&#xff1a;第一阶段&#xff1a;基础篇 学习PHP开发的基础知识&#xff0c;对PHP常见的漏洞进行分析&#xff0c;第二阶段&#xff1a;进阶篇 实战PHP漏洞靶场&#xff0c;了解市面上的PHP主流网站开发技术&#xff0c;并对市面上…

图解MySQL目录

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 一 .图解MySQL介绍 重点突击 MySQL 索引、事务、锁、日志等面试常问知识。 二 . 基础篇 执行一条 select 语句&#xff0c;期间发生了什么&#xff1f; : 执行一条 select 语句&#xff0c;期间发生了什…