一.项目简单介绍

我们获取字段的内容方式有很多种,但基本都要ctrl+c(复制)ctrl+v粘贴,然后还有手动去更改

而以python作为处理工具将会快很多,本项目需要安装的库:MySQLdb,pandas,numpy

比如我们想要在每个不同的值加上"" 而复制的数据为下图

那么我们每次都要在每行字段之间加上""和,非常的麻烦,那么如何处理这种将他转换为字符串列表的形式,并将列表属性去掉.

二.内容加符号格式化输出解决方案

1.导入库,as后面为别名

import MySQLdb
import pandas as pd
import numpy as np

2.pandas读取文件数据:

E:/py/txt/var.txt为我存放数据内容的表,其内容为sql中提取表中品牌字段中不同的值,原表为京东手机一年的销售数据:

# 导入文件,并设置index_col=None,
df = pd.read_csv('E:/py/txt/var.txt', index_col=None, engine='python', names=['品牌'])
print(df)

此时数据类型为DataFrame,为二维表

其中属性index_col值有三种,整数型,序列,布尔(默认为None)

index_col=None 列为index的值,即列使用默认索引 0 1 2 3....

index_col=0 第一列为index值,即此时第一列内容作为索引

运行结果如下:

品牌
0     vivo
1       荣耀
2       小米
3    Apple
4       纽曼
5       华为
6   realme
7     oppo
8       三星
9      努比亚
10     一加 
11      魅族
12    摩托罗拉
13      其它
14      酷派
15      朵唯
16     诺基亚
17     中兴 
18    飞利浦 
19     尼凯恩
20      天语
21      酷比
22      糖果
23      金立
24   nzone
25      黑鲨

# 将DataFrame格式转换为数组
array = np.array(df)

3.循环遍历输出并格式化输出

range(1, 26)若超出此范围会报错提示超出索引范围,但是不影响运行结果

IndexError: index 26 is out of bounds for axis 0 with size 26

for i in range(1, 26):s = df[i-1:i]array[i] = np.array(s)print(f"%c{str(*array[i])}%c," % (34, 34))

其中s=df[i-1:i]为循环输出df中每一条数据,类似series的索引输出

array[i] = np.array(s),将数据循环转换为数组并赋值

%c为格式化输出字符 并以ASCII码值为34的输出 % (34,34)

以列表形式输出:

# 数组转列表
a_list = array.tolist()
print(a_list)

[['vivo'], ['vivo'], ['荣耀'], ['小米'], ['Apple'], ['纽曼'], ['华为'], ['realme'], ['oppo'], ['三星'], ['努比亚'], ['一加 '], ['魅族'], ['摩托罗拉'], ['其它'], ['酷派'], ['朵唯'], ['诺基亚'], ['中兴 '], ['飞利浦 '], ['尼凯恩'], ['天语'], ['酷比'], ['糖果'], ['金立'], ['nzone']]

三.Mysqldb库解决数据库提取数据复杂的问题

1.要有相关库,上面已经提到了

2.以下为数据库输出代码

# 打开数据库连接
db = MySQLdb.connect("localhost", "root", "489000", "test", charset='utf8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取一条数据
version = cursor.fetchone()
print("Database version : %s " % version)
# 循环下标
# Sql预处理语句分组并查询各个品牌
sql = """SELECT 品牌 FROM SHEET1 \GROUP BY 品牌 """
cursor.execute(sql)
for i in range(1, 10000):data = cursor.fetchone()if data is None:breakelse:print(*data)  # 解包输出
# 关闭数据库连接
db.close()

3.循环时为了确保读数完整range范围可以设置大一些,然后在此基础上添加判断条件,

将循环游标读入的数据赋值给data,如果此种为None则终止循环,即再无数据可读,就终止循环并输出,为了保证输出格式为纯数据用*data解包此变量

四.整个过程完整代码及比对:

# _*_ coding:utf-8 _*_
# @Time    : 2022/9/1 9:30
# @Author  : ice_Seattle
# @File    : testprogram.py
# @Software: PyCharmimport MySQLdb
import pandas as pd
import numpy as np
# 打开数据库连接
db = MySQLdb.connect("localhost", "root", "489000", "test", charset='utf8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取一条数据
version = cursor.fetchone()
print("Database version : %s " % version)
# 循环下标
# Sql预处理语句分组并查询各个品牌
sql = """SELECT 品牌 FROM SHEET1 \GROUP BY 品牌 """
cursor.execute(sql)
for i in range(1, 10000):data = cursor.fetchone()if data is None:breakelse:print(*data)  # 解包输出
# 关闭数据库连接
db.close()
# 导入文件,并设置index_col=None,
df = pd.read_csv('E:/py/txt/var.txt', index_col=None, engine='python', names=['品牌'])
# 将DataFrame格式转换为数组
array = np.array(df)
for i in range(1, 26):s = df[i-1:i]array[i] = np.array(s)print(f"%c{str(*array[i])}%c," % (34, 34))
# 数组转列表
a_list = array.tolist()
print(a_list)

Navicat 运行 SELECT 品牌,count(品牌) from sheet1 group by 品牌结果如下:

 Kettle中spoon.bat运行程序test结果如下

五.总结

综上,若想提取字段中不同的内容:写好python代码之间运行后要比Navicat和Kettle快的多,且可以加上" "号用于列表等其它的数据转换,减少了复杂的操作步骤.

【Python】MySQLdb库的使用以及格式化输出字段中的值相关推荐

  1. python基础语法手册format-python的格式化输出(format,%)实例详解

    皇城PK Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问 ...

  2. Python print函数用法,print 格式化输出

    使用print输出各型的 字符串 整数 浮点数 出度及精度控制 strHello = 'Hello Python' print strHello #输出结果:Hello Python #直接出字符串 ...

  3. Python与用户的交互 ,格式化输出的三种方式

    目录 Python与用户的交互 1.为什么交互? 格式化输出的三种方式 1.占位符 format格式化 f-String格式化 基本运算符 流程控制之if判断 1.语法 1.1 if 1.2 if.. ...

  4. python右对齐格式化输出_Python中格式化输出的两种方法介绍

    本篇文章给大家带来的内容是关于Python中格式化输出的两种方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 方式一:使用占位符 % 常用占位符:% s (s = string ...

  5. python字符串_Python字符串三种格式化输出

    字符串格式化输出是python非常重要的基础语法,今天就把三种格式化输出做一个简单的总结,希望对大家有帮助. 格式化输出:内容按照一定格式要求进行输出. 1.使用占位符%输出 python2.6版本之 ...

  6. python保留两位小数_python格式化输出保留2位小数的实现方法

    我是小白就不用多说了,学习python做了个练习题,结果运行了一遍,发现输入金额后得到的有很多位小数, 虽然不知道为什么,但是看得很不舒服, 就想到应该把让小数点后只保留2位数 找到了方法:将{0}改 ...

  7. python123子字符串输出_【无为则无心Python基础】— 13.字符串的格式化输出(一)...

    五.Python字符串的格式化输出 1.什么是格式化输出 数据按照某种特殊的要求输出,假如字符串中有各种格式的数据,要拼接输出: 如果输入一个整数,希望整数按照十六进制,八进制输出. 如果输入一个小数 ...

  8. Python接口自动化响应结果json格式化输出+断言响应结果中指定的属性值+其他

    一.Python字典 二.Python元组 三.接口响应值转为字典格式 四.接口响应值以json格式输出并添加到allure报告中 五.断言响应结果中指定的属性值 六.TypeError: strin ...

  9. python浮点数输出格式_python常见的格式化输出小结

    本文总结了一些简单基本的输出格式化形式,下面话不多说了,来看看详细的介绍吧. 一.打印字符串 >>> print "I'm %s" % ("jihite ...

最新文章

  1. 自定义html页面鼠标右键,javascript鼠标右键菜单自定义效果
  2. erl0007 - erlang 远程节点连接的两种方式
  3. 算法:买卖股票的最佳时机含冷冻期
  4. 007_请求返回Json
  5. MFC中的InitInstance()函数应该怎样理解
  6. 转账示例(二):service层面实现(本例采用QueryRunner来执行sql语句,数据源为C3P0)...
  7. c++primer 5th第15章基础、课后习题自己解析、心得体会等
  8. 利用C#进行Socket通信编程之二:一个实例
  9. 利用Helm简化Kubernetes应用部署(1)
  10. jhipster_jHipster入门,第1部分
  11. QML笔记-在背景图中添加NumberAnimation使得界面效果更佳(小技巧)
  12. 面试官爱问的10大经典排序算法,20+张图来搞定
  13. java8 Stream的实现原理 (从零开始实现一个stream流)
  14. Python爬虫编程常见问题解决方法
  15. ❤️再也不用为了重写方法而苦恼了,Lombok帮你解决!
  16. HDU 5701:中位数计数
  17. PHP报错:Invalid body indentation level (expecting an indentation level of at least 4)
  18. 【Java与智能设备】用户界面基础
  19. 解决ColorPix拾色器提取颜色错误
  20. CRC循环冗余校验码原理解析(附实例)

热门文章

  1. 袋鼠云数据湖平台「DataLake」,存储全量数据,打造数字底座
  2. 2021开年巨作!JDBC连接数据库工具类!
  3. 创始人、CEO、总裁和董事长到底谁更大?
  4. 两大Mac内存清理方法,嫌麻烦的就直接使用第二种
  5. 2011版MacBook Air win7安装教程
  6. 采用非常规方法(非gprecoverseg) 恢复greenplum数据库
  7. ORAN专题系列-28:5G基站如何升级到ORAN基站 - O-RU - 平台和传输层的改进(VLAN, PCP, DHCP, DNS)
  8. AE/PR插件AI智能背景抠像颜色键控GoodbyeGreenscreenzxb V1.6.0官方版
  9. 幼儿抽象逻辑思维举例_孩子逻辑思维能力有多重要?巧用生活小游戏,培养好了娃受益终身...
  10. table表格固定thead,tbody可滑动