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网页请求urllib2模块简单封装代码
Feb 07 Python
python列出目录下指定文件与子目录的方法
Jul 03 Python
Python的Django框架安装全攻略
Jul 15 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
Flask之flask-session的具体使用
Jul 26 Python
OpenCV图像颜色反转算法详解
May 13 Python
在pycharm中显示python画的图方法
Aug 31 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
Python阶乘求和的代码详解
Feb 14 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 Python
Python Pygame实战之塔防游戏的实现
Mar 17 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解析http获取的json字符串变量总是空白null
2015/03/02 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
php简单中奖算法(实例)
2017/08/15 PHP
PHP实现微信退款功能
2018/10/02 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
Python3读取文件常用方法实例分析
2015/05/22 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
python正则分析nginx的访问日志
2017/01/17 Python
python获取中文字符串长度的方法
2018/11/14 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
python程序控制NAO机器人行走
2019/04/29 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
商务英语专业自荐信
2013/10/14 职场文书
社团活动策划书范文
2014/01/09 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
宾馆客房管理制度
2015/08/06 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python