import sys
import os
import sqlite3 ##sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
##sys.path.append("..") class ConnectSqlite: def __init__(self, dbName="sqlite3Test.db"):
"""
初始化连接--使用完记得关闭连接
:param dbName: 连接库名字,注意,以'.db'结尾
"""
self._conn = sqlite3.connect(dbName)
self._cur = self._conn.cursor()
self._time_now = "[" + sqlite3.datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S') + "]" def close_con(self):
"""
关闭连接对象--主动调用
:return:
"""
self._cur.close()
self._conn.close() def create_tabel(self, sql):
"""
创建表初始化
:param sql: 建表语句
:return: True is ok
"""
try:
self._cur.execute(sql)
self._conn.commit()
return True
except Exception as e:
print(self._time_now, "[CREATE TABLE ERROR]", e)
return False def drop_table(self, table_name):
"""
删除表
:param table_name: 表名
:return:
"""
try:
self._cur.execute('DROP TABLE {0}'.format(table_name))
self._conn.commit()
return True
except Exception as e:
print(self._time_now, "[DROP TABLE ERROR]", e)
return False def delete_table(self, sql):
"""
删除表记录
:param sql:
:return: True or False
"""
try:
if 'DELETE' in sql.upper():
self._cur.execute(sql)
self._conn.commit()
return True
else:
print(self._time_now, "[EXECUTE SQL IS NOT DELETE]")
return False
except Exception as e:
print(self._time_now, "[DELETE TABLE ERROR]", e)
return False def fetchall_table(self, sql, limit_flag=True):
"""
查询所有数据
:param sql:
:param limit_flag: 查询条数选择,False 查询一条,True 全部查询
:return:
"""
try:
self._cur.execute(sql)
war_msg = self._time_now + ' The [{}] is empty or equal None!'.format(sql)
if limit_flag is True:
r = self._cur.fetchall()
return r if len(r) > 0 else war_msg
elif limit_flag is False:
r = self._cur.fetchone()
return r if len(r) > 0 else war_msg
except Exception as e:
print(self._time_now, "[SELECT TABLE ERROR]", e) def insert_update_table(self, sql):
"""
插入/更新表记录
:param sql:
:return:
"""
try:
self._cur.execute(sql)
self._conn.commit()
return True
except Exception as e:
print(self._time_now, "[INSERT/UPDATE TABLE ERROR]", e)
return False def insert_table_many(self, sql, value):
"""
插入多条记录
:param sql:
:param value: list:[(),()]
:return:
"""
try:
self._cur.executemany(sql, value)
self._conn.commit()
return True
except Exception as e:
print(self._time_now, "[INSERT MANY TABLE ERROR]", e)
return False class conTest:
"""测试类""" def __init__(self,file):
self.con =sqlite3.connect(file)
self.cur=self.con.cursor() def create_table_test(self,bm):
sql = '''CREATE TABLE `mytest` (
`id` DATETIME DEFAULT NULL,
`user` VARCHAR(12) DEFAULT NULL,
`name` VARCHAR(12) DEFAULT NULL,
`number` VARCHAR(12) DEFAULT NULL
)'''
sql1 = f'PRAGMA table_info ({bm})'
print(sql1)
self.cur.execute(sql1)
self.con.commit()
value2 = self.cur.fetchall()
if len(value2)==0:
try:
print(self.cur.execute(sql))
self.con.commit()
except:
print("建立表出错")
else:
print("表已经存在") def drop_table_test(self):
sql1="delete from mytest"
self.cur.execute((sql1))
self.con.commit()
#print(self.con.drop_table("mytest")) def fetchall_table_test(self):
sql = "SELECT * from mytest WHERE user='1003';"
sql_all = "SELECT * from mytest;"
print("全部记录", self.cur.execute(sql_all))
print("全部记录", self.cur.fetchall())
print("单条记录", self.cur.execute(sql))
print("条件查询", self.cur.execute(sql)) def delete_table_test(self):
sql = "DELETE FROM mytest WHERE user='1003';"
self.con.delete_table(sql) def update_table_test(self):
sql_update = "UPDATE mytest SET id={0},user={1},name={2},number={3} WHERE number={4}".format(1, 1002, "'王五'",1002,1002)
self.cur.execute(sql_update)
self.con.commit() #print(self.con.insert_update_table(sql_update)) def insert_table_test_one(self):
sql = """INSERT INTO mytest VALUES (3, 1003, "王五", 1003);"""
self.cur.execute((sql))
self.con.commit() def insert_table_test_many(self):
sql = """INSERT INTO mytest VALUES (?,?,?,?) """
value = [(2, 1004, "赵六", 1004), (4, 1005, "吴七", 1005)]
for i in value:
self.cur.execute(sql,i)
self.con.commit()
## self.con.insert_table_many(sql, value)
## self.cur def close_con(self):
self.con.close() if __name__ == '__main__':
file1="sqlite3Test.db"
bm="mytest"
contest = conTest(file1)
contest.create_table_test(bm)
contest.insert_table_test_many()
contest.fetchall_table_test()
contest.insert_table_test_one()
contest.fetchall_table_test()
contest.update_table_test()
contest.drop_table_test()
contest.close_con()

python sqlite3 类的更多相关文章

  1. python sqlite3 数据库操作

    python sqlite3 数据库操作 SQLite3是python的内置模块,是一款非常小巧的嵌入式开源数据库软件. 1. 导入Python SQLite数据库模块 import sqlite3 ...

  2. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  3. 【python】类中的self

    在python的类中,经常会写self,代表对象自己.如下例: #coding=utf-8 class Foo: def __init__(self, name): self.name = name ...

  4. python基础——类和实例

    python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...

  5. python(6)-类

    面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" 来实现,所以,面向对象编程其实就是对 "类" 和 "对 ...

  6. 从C#到Python —— 4 类及面向对象

    http://www.cnblogs.com/yanxy/archive/2010/04/04/c2p_4.html 如果你熟悉C#,那么对类(Class)和面向对象(Object Oriented) ...

  7. python sqlite3使用

    python sqlite3文档地址:http://docs.python.org/2/library/sqlite3.html The sqlite3 module was written by G ...

  8. Python type类具体的三大分类:metaclasses,classes,instance

    Python type类视角中的对象体系需要我们不断的学习,其中我们使用的时候需要注意.下面我们就看看如何才能更好的运用Python type类.下面的文章希望大家有所收获. 在单纯的Python t ...

  9. python元类分析

    刚開始接触到Python新式类中的元类的概念的时候非常是纠结了下..不知道这是个啥东西... 用下面几个定义来说明吧: (1)Python中,类也是对象..仅仅只是这样的对象比較的特殊,他用于创建别的 ...

随机推荐

  1. .NET Core Web API使用HttpClient提交文件的二进制流(multipart/form-data内容类型)

    需求背景: 在需要通过服务端请求传递文件二进制文件流数据到相关的服务端保存时,如对接第三方接口很多情况下都会提供一个上传文件的接口,但是当你直接通过前端Ajax的方式将文件流上传到对方提供的接口的时候 ...

  2. AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(五) RNNs in Darknet 递归神经网络是表示随时间变化的数据的强大模型.为了更好地介绍RNNs,我强烈推荐Andrej K ...

  3. MindInsight计算图可视设计

    MindInsight计算图可视设计 特性背景 计算图可视的功能,主要协助开发者在下面这些场景中使用. 开发者在编写深度学习神经网络的代码时,可以使用计算图的功能查看神经网络中算子的数据流走向,以及模 ...

  4. 在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据

    在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据 如今,最流行的拍照设备智能手机可以捕获高达4K UHD的图像(3840×2160图像),原始数据超过25 MB.即使 ...

  5. 视频处理器为电池供电的设计提供4K视频编码

    视频处理器为电池供电的设计提供4K视频编码 Video processor enables 4K video coding for battery-powered designs OmniVision ...

  6. zookeeper分布式锁,解决了羊群效应, 真正的zookeeper 分布式锁

    zookeeper 实现分布式锁,监听前一个节点来避免羊群效应, 思路:很简单,但是实现起来要麻烦一些, 而且我也是看了很多帖子,发现很多帖子的代码,下载下来逐步调试之后发现,看起来是对的,但在并发情 ...

  7. jmeter+ant+jenkins框架搭建问题

    工具介绍:   jmeter 接口编写,调试,执行.   ant Ant是Java的生成工具,都是用来编译.生成:Ant的主要目的就是把你想做的事情自动化,不用你手动一步一步做,因为里面内置了java ...

  8. 【UG二次开发】装配设计

    与装配相关的术语 tag 部件或对象的标识,还可能是部件原型.实例和事例 piece part 单个部件 occurrence 部件或对象的事例,装配中的是部件事例 object occurrence ...

  9. 把axios获取到的数据渲染到列表上,使用better-scroll实现列表左右滑动

    问题:axios数据请求完后,页面是有数据的,即页面看到有数据,但是better-scroll却无法滚动 原因:这是因为在数据更新前,better-scroll已经渲染完成了 解决方法:这是个异步问题 ...

  10. 如果你这么去理解HashMap就会发现它真的很简单

    Java中的HashMap相信大家都不陌生,也是大家编程时最常用的数据结构之一,各种面试题更是恨不得掘地三尺的去问HashMap.HashTable.ConcurrentHashMap,无论面试题多么 ...