当前位置: 首页 > news >正文

Python操作Sqlite的简单封装

文章目录

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


一、安装依赖

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)# []

相关文章:

  • JAVA------基础篇
  • 2024年03月CCF-GESP编程能力等级认证C++编程五级真题解析
  • 在存在代理的主机上,为docker容器配置代理
  • 浏览器导出excel
  • 17.注释和关键字
  • Lombok 简单讲解
  • YOLOV8逐步分解(2)_DetectionTrainer类初始化过程
  • 线程安全问题及解决
  • mysql--事务四大特性与隔离级别
  • Neo4j桌面版导入CVS文件
  • 利用瑞士军刀netcat建立连接并实现文件上传
  • 从姿态估计到3D动画
  • 1.7.2 python练习题15道
  • C++超市商品管理系统
  • 计算机网络基础——网络安全/ 网络通信介质
  • 【知识碎片】第三方登录弹窗效果
  • CSS中外联样式表代表的含义
  • java2019面试题北京
  • JS笔记四:作用域、变量(函数)提升
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Node 版本管理
  • nodejs:开发并发布一个nodejs包
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • SQLServer之索引简介
  • Vue 重置组件到初始状态
  • 笨办法学C 练习34:动态数组
  • 大整数乘法-表格法
  • 构建工具 - 收藏集 - 掘金
  • 盘点那些不知名却常用的 Git 操作
  • 前端存储 - localStorage
  • 设计模式 开闭原则
  • 算法-图和图算法
  • 微服务框架lagom
  • 一个SAP顾问在美国的这些年
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 用jquery写贪吃蛇
  • ionic入门之数据绑定显示-1
  • 如何用纯 CSS 创作一个货车 loader
  • ​Spring Boot 分片上传文件
  • # C++之functional库用法整理
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 数论-逆元
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (九)One-Wire总线-DS18B20
  • (五)IO流之ByteArrayInput/OutputStream
  • (新)网络工程师考点串讲与真题详解
  • (转)Scala的“=”符号简介
  • .NET 8.0 发布到 IIS
  • .Net Core和.Net Standard直观理解
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net8 Blazor 尝鲜
  • .net程序集学习心得