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函数学习笔记
Oct 07 Python
python3.0 字典key排序
Dec 24 Python
理解python多线程(python多线程简明教程)
Jun 09 Python
跟老齐学Python之大话题小函数(2)
Oct 10 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
python机器人行走步数问题的解决
Jan 29 Python
python 调用有道api接口的方法
Jan 03 Python
python3.6编写的单元测试示例
Aug 17 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
python 从list中随机取值的方法
Nov 16 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 Python
pytorch 如何使用float64训练
May 24 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
php输出形式实例整理
2020/05/05 PHP
JavaScript 变量基础知识
2009/11/07 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
python对常见数据类型的遍历解析
2019/08/27 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
毕业自荐书
2013/12/09 职场文书
表演方阵解说词
2014/02/08 职场文书
交通事故委托书范本
2014/09/28 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
用golang如何替换某个文件中的字符串
2021/04/25 Golang
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python