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提示No module named images的解决方法
Sep 29 Python
DataFrame中的object转换成float的方法
Apr 10 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
使用numba对Python运算加速的方法
Oct 15 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
Python多线程及其基本使用方法实例分析
Oct 29 Python
django 读取图片到页面实例
Mar 27 Python
python 轮询执行某函数的2种方式
May 03 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
Django mysqlclient安装和使用详解
Sep 17 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 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-fpm的两种进程管理模式详解
2013/06/03 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
Python实现注册、登录小程序功能
2018/09/21 Python
使用Python 统计高频字数的方法
2019/01/31 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
Python利用命名空间解析XML文档
2020/08/10 Python
一个C/C++编程面试题
2013/11/10 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
运动会稿件50字
2014/02/17 职场文书
动员大会主持词
2014/03/20 职场文书
求职自荐信的格式
2014/04/07 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
2014年文秘工作总结
2014/11/25 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
情人节单身感言
2015/08/03 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
礼仪培训心得体会
2016/01/22 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
2019各种承诺书范文
2019/06/24 职场文书
python使用glob检索文件的操作
2021/05/20 Python
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android