python 获取sqlite3数据库的表名和表字段名的实例


Posted in Python onJuly 17, 2019

Python中对sqlite3数据库进行操作时,经常需要用到字段名,然而对于sqlite使用select语句并不能象MySql等数据库一样返回带字段名的字典数据集。特别是对于一个不熟悉的sqlite数据库,写代码时如果需要借助工具查看,那其实是有点对不起python的。

下面两段代码就可以轻易获得一个sqlite数据库中所有数据表名和字段名的列表:

# python 获取sqlite3数据库mydb.db中的表名和表字段名
 
import sqlite3
conn=sqlite3.connect('mydb.db')
cu=conn.cursor()
 
#获取表名,保存在tab_name列表
cu.execute("select name from sqlite_master where type='table'")
tab_name=cu.fetchall()
tab_name=[line[0] for line in tab_name]
 
#获取表的列名(字段名),保存在col_names列表,每个表的字段名集为一个元组
col_names=[]
for line in tab_name:
  cu.execute('pragma table_info({})'.format(line))
  col_name=cu.fetchall()
  col_name=[x[1] for x in col_name]
  col_names.append(col_name)
  col_name=tuple(col_name)
 
#之所以保存为元组,一是可避免误操作修改字段名,二是元组巧用转化字符串,可
#直接用于SQL的insert语句中。例如下面代码可得到第一个表的带括号字段名集合:
'''
  sql_col_name=str(col_names[0]).replace('\'','')
'''

接下来,用自动获取的字段名做点事吧。

比如,我一个sqlite数据库的表数据是从Excel表中导入的,Excel表中一些误录入的回车符也被一同导入了,在sqlite表中会显示为‘\n'的字符,我想把所有字段中的这个字符都去掉,我是通过以下代码实现的。

#删除第一个表中所有文本型字段中的回车符(注:存入数据库中的回车符取出
#后会展现为原始字符'\n')
cu.execute('select * from '+ tab_name[0])
cdset=cu.fetchall()
cdset=[list(line) for line in cdset] #将结果集的元组转为列表,才能修改。
for line in cdset:
  for x in range(len(line)):
  #注:作为For循环计数变量不能在循环体中修改,此处不能用x in line代替
    if type(line[x])==str and (r'\n' in line[x]):  #只能修改字符型数据
      line[x]=line[x].replace(r'\n','')
      sql="update {bm} set {cm}='{vm}' where {cm2}={vm2}".format(
        bm=tab_name[0],cm=col_names[0][x],vm=line[x],cm2=col_names
        [0][0],vm2=line[0])
        #此处cm2必须是表中具有排它性的主键字段,非字符型字段
      cu.execute(sql)
conn.commit()

以上这篇python 获取sqlite3数据库的表名和表字段名的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
Python基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
python实现linux下使用xcopy的方法
Jun 28 Python
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 Python
妙用itchat! python实现久坐提醒功能
Nov 25 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
Python实现生活常识解答机器人
Jun 28 Python
使用Django框架创建项目
Jun 10 Python
python计算列表元素与乘积详情
Aug 05 Python
Python math库 ln(x)运算的实现及原理
Jul 17 #Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 #Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 #Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 #Python
PIL图像处理模块paste方法简单使用详解
Jul 17 #Python
python 实现GUI(图形用户界面)编程详解
Jul 17 #Python
解决python tkinter界面卡死的问题
Jul 17 #Python
You might like
PHP出错界面
2006/10/09 PHP
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
php中session与cookie的比较
2015/01/27 PHP
php常用图片处理类
2016/03/16 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
[46:03]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
python字典多条件排序方法实例
2014/06/30 Python
Python中装饰器的一个妙用
2015/02/08 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
python os.path模块常用方法实例详解
2018/09/16 Python
python 实现敏感词过滤的方法
2019/01/21 Python
简单的Python调度器Schedule详解
2019/08/30 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
高中毕业的自我鉴定
2013/12/09 职场文书
保护环境倡议书
2014/04/14 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技