本文介绍python3对sqite3数据库的常用操作,sqite官网。

一、创建数据库操作类

class CDBManage:def __init__(self, dbname: str = None):self.__dbname = 'local.db'if dbname:self.__dbname = '{0}.db'.format(dbname)self.__conn = sqlite3.connect(self.__dbname)def __del__(self):self.__conn.close()def get_dbname(self):return '{0}/{1}'.format(os.path.abspath('./'), self.__dbname)def sqlite3_query(self, sql: str):results = []try:cursor = self.__conn.execute(sql)results = cursor.fetchall()except Exception as e:self.__conn.rollback()  # 事务回滚logging.error('[sqlite3_query]Failed to run sqlite3_query, {0}'.format(e))return results# 执行自定义sql语句增、删、改def sqlite3_execute(self, sql: str):try:cur = self.__conn.cursor()cur.execute(sql)self.__conn.commit()cur.close()except Exception as e:self.__conn.rollback()  # 事务回滚logging.error('[sqlite3_execute]Failed to run sqlite3_execute, {0},{1}'.format(e, sql))# 批量执行自定义sql语句增、删、改def sqlite3_batch_execute(self, sqlList: list):if not sqlList:returntry:cur = self.__conn.cursor()for sql in sqlList:cur.execute(sql)self.__conn.commit()cur.close()except Exception as e:self.__conn.rollback()  # 事务回滚logging.error('[sqlite3_batch_execute]Failed to run sqlite3_batch_execute, {0}'.format(e))

说明:

  • 类创建对象时,创建默认数据库名称local.db,并创建数据库连接
  • 对象销毁时,关闭数据库连接
  • sqlite3_query运行查询sql语句,结果以列表形式返回
  • sqlite3_execute运行sql语句增、删、改
  • sqlite3_batch_execute批量运行sql语句增、删、改
  • 增、删、改操作出错后支持事务回滚

二、sqite3常用操作

1. 创建数据表

def create_database(tb_name: str, tb_content: str):dbman = CDBManage()sql = "select * from sqlite_master where type = 'table' and name = '{0}';".format(tb_name)results = dbman.sqlite3_query(sql)if not results:dbman.sqlite3_execute(tb_content)else:logging.info('数据表{0}已经存在'.format(tb_name))# 调用例子
create_database('site_info', '''CREATE TABLE site_info(ST_Id INTEGER PRIMARY KEY AUTOINCREMENT,ST_Site           CHAR(255)    NOT NULL,ST_Storage        CHAR(32)    NOT NULL,ST_Desc           CHAR(255)    NOT NULL,ST_Type           CHAR(64));''')

2. 删除数据表

def delete_table(tb_name: str):dbman = CDBManage()sql = "drop table {0};".format(tb_name)dbman.sqlite3_execute(sql)# 调用例子
delete_table('site_info')

3. 清空数据表

def empty_table(tb_name: str):dbman = CDBManage()sql = "delete from {0};".format(tb_name)dbman.sqlite3_execute(sql)# 调用例子
empty_table('site_info')

4. 增加数据表字段

def add_table_field(tb_name: str, field: str):dbman = CDBManage()sql = "ALTER TABLE {0} ADD COLUMN {1};".format(tb_name, field)dbman.sqlite3_execute(sql)# 调用例子
add_table_field('site_info', 'field1 CHAR(32)')
add_table_field('site_info', 'field2 INT')

5. 删除数据表字段

SQLite目前还不支持drop column,删除需要写代码实现

def del_table_field(tb_name: str, field: str):dbman = CDBManage()# 查询数据表所有字段sql = "pragma table_info({0});".format(tb_name)field_list = []results = dbman.sqlite3_query(sql)# [(0, 'ST_Id', 'INTEGER', 0, None, 1), (1, 'ST_Site', 'CHAR(255)', 1, None, 0), (2, 'ST_Storage', 'CHAR(32)', 1, None, 0), (3, 'ST_Desc', 'CHAR(255)', 1, None, 0), (4, 'ST_Type', 'CHAR(64)', 0, None, 0)]if results:for res in results:field_list.append(res[1])  # 第二个值是字段名称if field not in field_list:returnsql = "create table temp as select {0} from {1} where 1 = 1;".format(','.join(field_list.remove(field, tb_name)))dbman.sqlite3_execute(sql)  # 删除字段后用剩余字段创建临时表sql = "drop table {0};".format(tb_name);  dbman.sqlite3_execute(sql)  # 删除旧表sql = "alter table temp rename to {0};".format(tb_name);  dbman.sqlite3_execute(sql)  # 把临时表改名为旧表名称# 调用例子
del_table_field('site_info', 'ST_Type')

python3操作sqite3删除数据表字段相关推荐

  1. 创建数据库表及修改删除数据表字段

    创建数据库表   例: 目标:创建一个school数据库 创建学生表(列,字段)        使用SQL语句创建 要求:学号int.姓名varchar.密码varchar.生日datetime.家庭 ...

  2. 修改和删除数据表字段

    SHOW CREATE DATABASE school   --查看创建数据库的语句 SHOW CREATE TABLE student     --查看student数据表的定义语句   DESC ...

  3. 5.修改和删除数据表字段

    修改: -- 修改表名 ALTER TABLE `原表名` RENAME AS `新表名`; ALTER TABLE `student` RENAME AS `student1`; -- 新增表的字段 ...

  4. MySQL学习:修改和删除数据表字段

    1. 修改 -- 修改表的名字: ALTER TABLE 表名 RENAME AS 新表名 ALTER TABLE student RENAME AS student1;/*modify 不能用来字段 ...

  5. 【数据库】修改和删除数据表字段

    修改 修改表名: ALTER TABLE 旧表名 RENAME AS 新表名 例子: -- 修改表名,ALTER TABLE 旧表名 RENAME AS 新表名 ALTER TABLE teacher ...

  6. 修改alter和删除数据表字段

    ALTER TABLE `student`RENAME AS`student1` 修改表名 ALTER TABLE `student1`ADD grade INT(2) 增加表的字段 ALTER TA ...

  7. mysql 命令执行drop 命令_(笔记)Mysql命令drop table:删除数据表

    drop table命令用于删除数据表. drop table命令格式:drop table ; 例如,删除表名为 MyClass 的表: mysql> drop table MyClass; ...

  8. cmd命令窗口mysql查询表数据命令行_cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)...

    一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql  或者通过一键集成工具 打开mysql命令行  或者mysql 可视化工具 打开命令行 进入这样的界面   不同的机器操作不同 ...

  9. xampp mysql创建表_xampp怎样创建数据表和删除数据表 来学习吧

    xampp新建好数据库之后,怎样新建数据表呢?今天咪咪我就来讲解一下xampp中怎样创建数据表和删除数据表. 工具/材料 电脑 电脑 xampp 操作方法 01 如图,单击选中已经创建好的数据库. 0 ...

最新文章

  1. 正定小主人机器人_石家庄正定县2015中小学生机器人运动大赛隆重开幕
  2. mac bash 下使用vi 快捷方式——因为没有alt键 所以没有办法 用vi模式也非常方便的...
  3. excel去重_你好Python!再见Excel?
  4. ALEIDoc EDI(3)--change point01
  5. wifi模块 服务器通讯协议,模块之间通信协议
  6. 解决ASP.NET MVC 下使用SQLite 报no such table的问题
  7. PreparedStatement批量执行sql
  8. HTML5新增的表单元素有哪些?
  9. 解决Ionic的ion-slide-box 2条数据渲染问题
  10. 解决Gerrit的git unpack error问题
  11. 中原地区第一款开源产品SmartAdmin和《Smart前后台代码规范》正式发布
  12. 手把手教你反编译apk
  13. Geronimo入门与进阶
  14. python图灵机器人微信号_IT之家学院:让你的微信号变成自动聊天机器人
  15. 锁存器和缓冲器的区别
  16. iptable命令参数详解
  17. 不止Docker:8款容器管理开源方案
  18. JAVA中Action层, Service层 ,model层 和 Dao层的功能区分
  19. 跟尤雨溪一起解读Vue3源码笔记- Vue Mastery
  20. 惊! 程序员S哥new了一个3D女朋友!

热门文章

  1. device-mapper 块级重删(dm dedup) 3代码结构(4)
  2. 用docker快速搭建chevereto图床
  3. 创客匠人赋能线上瑜伽健身实现流量增长
  4. Vue 富文本编辑器插件 vue-quill-editor 坑!
  5. 基于RTT Nano的多任务嵌入式程序设计
  6. RLilib 训练API
  7. 公用计算机互联网工程验收规范,公用计算机互联网工程验收规范.doc
  8. js——获取两个日期之间相差多少天或者多少时间(天+小时+分+秒)——基础积累
  9. JAVA中国人与美国人
  10. 贝叶斯系列——贝叶斯定理、贝叶斯决策、朴素贝叶斯、贝叶斯网络、贝叶斯滤波器