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中asyncore的用法实例
Sep 29 Python
python同时给两个收件人发送邮件的方法
Apr 30 Python
python中list列表的高级函数
May 17 Python
视觉直观感受若干常用排序算法
Apr 13 Python
python实现图片处理和特征提取详解
Nov 13 Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
python 动态绘制爱心的示例
Sep 27 Python
Pandas的数据过滤实现
Jan 15 Python
Python学习之os包使用教程详解
Mar 21 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
header()函数使用说明
2006/11/23 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
Django中几种重定向方法
2015/04/28 Python
Python中的urllib模块使用详解
2015/07/07 Python
Python实现简单登录验证
2016/04/13 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
python3跳出一个循环的实例操作
2020/08/18 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
答谢会策划方案
2014/05/12 职场文书
村党组织公开承诺书
2015/04/30 职场文书
寒假致家长的一封信
2015/10/10 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
Python  lambda匿名函数和三元运算符
2022/04/19 Python