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实现模拟按键,自动翻页看u17漫画
Mar 17 Python
Python中处理字符串之islower()方法的使用简介
May 19 Python
在Django框架中设置语言偏好的教程
Jul 27 Python
12步入门Python中的decorator装饰器使用方法
Jun 20 Python
Win8下python3.5.1安装教程
Jul 29 Python
python3实现多线程聊天室
Dec 12 Python
Python 分享10个PyCharm技巧
Jul 13 Python
django框架创建应用操作示例
Sep 26 Python
python返回数组的索引实例
Nov 28 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
python字符串判断密码强弱
Mar 18 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 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自动加载的两种实现方法
2010/06/21 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
小学生暑假感言
2014/02/06 职场文书
端午节活动策划方案
2014/03/09 职场文书
学生请假条
2014/04/11 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
升职感谢信
2015/01/22 职场文书
校运会新闻稿
2015/07/17 职场文书
小学数学教师研修日志
2015/11/13 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
python中os.path.join()函数实例用法
2021/05/26 Python