python 获取sqlite3数据库的表名和表字段名的实例
作者:梦游吧 发布时间:2024-01-24 13:34:22
标签:python,sqlite3,表名,字段名
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()
来源:https://blog.csdn.net/weixin_43609059/article/details/84035833
0
投稿
猜你喜欢
- 关于django models中添加字段的一个小节,记录下django的models中已经写好了字段,可是后面我又想在添加一些字段,于是就在
- 本文向大家介绍了使用SQL语句提取数据库所有表的表名、字段名的实例代码,在SQLserver 中进行了测试,具体内容如下:--查询所有用户表
- 默认情况下,SQL Server 保存 7 个 ErrorLog 文件,名为: ErrorLog ErrorLog.1 ErrorLog.2
- 首先要声明的是1,游标的方法会很慢在mysql中,在oracle数据库中还可以,除非没有别的方法,一般不建议在mysql中使用游标,2,不建
- 阅读上一篇:WEB2.0网页制作标准教程(11)不用表格的菜单辛苦了好多天,我们努力学习使用XHTML+CSS来重新设计我们的网站。那么我们
- 做个性休闲类项目课程材料,对这方面要求多一些,要总结方法、手法、想法等等,头大了;这里总结了一个做个性字体设计的方法,分享一下;方法是比较简
- 一般的网站会有很多页面,面包屑导航可以大大改善用户寻找他们的路径的方法。就可用性而言,面包屑可以减少一个网站的用户返回上一级页面的操作次数,
- 为什么在facebook交友会更容易?facebook与传统的BSP(Blog Service Provider)到底有什么不同?是因为它有
- SQL Server中加密是层级的,每一个上层为下提供保护。如图:实例:/** SMK(Service Master Key)在SQL Se
- 1.事件简介事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理
- 案例解析这个问题描述起来有点违反直觉,要执行一个文件难道不应该需要可执行权限吗?让我们先来看一个例子:# module1.pydef tes
- 1、使用mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户<?php /
- 在日常的python编程中使用这几个函数来简化我们的编程工作,经常使用能使编程效率大大地提高。1. Map 函数map函数可以使用另外一个函
- FROM publish WHERE (id NOT IN (SELECT&
- meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的<head>与</head&
- 1. 用户输入内容与打印输入:input()输出:print()例1,输入字符串,并原样输出a = input('请输入一些字符
- tf.reverse_sequence()简述在看bidirectional_dynamic_rnn()的源码的时候,看到了代码中有调用 r
- Python 中有三个非常好用的数据结构,列表,元组和字典, 元组是不可变的,列表可以保存任意类型的Python对象,并可以随意扩展没有大小
- 1. 简介在一些研究领域很多经典算法和工具都由上古语言Fortran编写,而这部分代码又没有对应的C/C++和Python版本。因此,掌握P
- 网上看到过许多螺旋线的程序,但不是黑色就是单个颜色不变。这里作者编了一个程序,还很漂亮的。希望大家喜欢!!!使用turtle绘图。代码如下。