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实现比较两个列表(list)范围
Jun 12 Python
对于Python中RawString的理解介绍
Jul 07 Python
Python实现的用户登录系统功能示例
Feb 05 Python
Python matplotlib绘图可视化知识点整理(小结)
Mar 16 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
Django如何将URL映射到视图
Jul 29 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
用python制作个音乐下载器
Jan 30 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
PHP 遍历文件实现代码
2011/05/04 PHP
php之XML转数组函数的详解
2013/06/07 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
php中error与exception的区别及应用
2014/07/28 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
js停止输出代码
2008/07/20 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
python画微信表情符的实例代码
2019/10/09 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
python实现粒子群算法
2020/10/15 Python
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
房地产员工找工作的自我评价
2013/11/15 职场文书
优秀广告词大全
2014/03/19 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript