分享

python mysql查询出的数据格式转化(str\list\json)

 我的图书,我的馆 2020-08-13

                                                       

        完整的自动化测试并不只是校验API返回的数据是否正确,必须要再加上一笔-对数据存的数据存储及变化也做相应校验,才算是完整的。但是很多同学很可能也注意到了,对于mysql查询的数据结果数据类型不是可以直接用来取数很是头疼,本次针对转换数据来个大家做个简单的事例,供大家参考。

1、不对mysql查询出的数据做任何转换

import pymysql
from conf import datas
def mysql_self(type,sql):
if type == 'mysql':
conn=pymysql.connect(
host=datas['sit']['数据库hosts'],
port=int(datas['sit']['数据库端口']),
user=datas['sit']['用户名'],
passwd=datas['sit']['用户密码'],
db=datas['sit']['数据库名称'],
charset='utf8'
)
cur = conn.cursor()
r = cur.execute(sql)
info = cur.fetchmany(r)
for i in info:
logger.info(i)
cur.close()
conn.commit()
conn.close()
for row in info:
print('row数据类型:',row)
return row
mysql_self('mysql','select username from userinfo ')

返回数据为‘tuple’,这时是不能直接供接口校验使用的:

2、tuple转str:

import pymysql
from conf import datas
from mylogs import logger
def mysql_self(type,sql):
if type == 'mysql':
conn=pymysql.connect(
host=datas['sit']['数据库hosts'],
port=int(datas['sit']['数据库端口']),
user=datas['sit']['用户名'],
passwd=datas['sit']['用户密码'],
db=datas['sit']['数据库名称'],
charset='utf8'
)
cur = conn.cursor()
        r = cur.execute(sql)
info = cur.fetchmany(r)
for i in info:
logger.info(i)
cur.close()
conn.commit()
conn.close()
for row in info:
return row
testdata=mysql_self('mysql','select username from userinfo ')
after_testdata=str(testdata)#转换成str类型
print('after_testdata 数据类型:',type(after_testdata))

3、查询数据库数据转换为list:

#encoding:utf-8
import pymysql

from coin_web_autoApiTest.con.conf import datas
from coin_web_autoApiTest.con.mylogs import logger

def mysql_self(type,sql):
if type == 'mysql':
conn=pymysql.connect(
host=datas['sit']['数据库hosts'],
port=int(datas['sit']['数据库端口']),
user=datas['sit']['用户名'],
passwd=datas['sit']['用户密码'],
db=datas['sit']['数据库名称'],
charset='utf8'
)
cur = conn.cursor()
#语句
# sql = 'select uri from cfc_order where `tel`='13306534323' order by id desc LIMIT 10 '
r = cur.execute(sql)
info = cur.fetchmany(r)
for i in info:
logger.info(i)
cur.close()
conn.commit()
conn.close()
#把数据库里取出来的数据,转换成list格式
listdata=[]
for row in info:
listdata.append(row[0])
return listdata
list_data=mysql_self('mysql','select username from userinfo ')
print('list_data 数据类型:', type(list_data))
print('list_data 数据:', list_data)

这时返回的数据类型为list,可以list[...]使用

4、查询数据库数据转换为json:

# coding=utf-8
import json, MySQLdb
def TableToJson():
try:
conn = MySQLdb.Connect(host='127.0.0.1', user='root', passwd='root', db='coin_web_autoApiTest', port=3306, charset='utf8')
cur = conn.cursor()
# 3.编写sql
sql = 'select username,password from coin_web_autoApiTest_userinfo order by id desc limit 1'
cur.execute(sql)
data = cur.fetchall()
print(u'fetchall()返回的数据:', data)
cur.close()
conn.close()
jsonData = []
for row in data:
result = {}
result['username'] = str(row[0])
result['password'] = str(row[1])
jsonData.append(result)
print(u'转换为列表字典的原始数据:', jsonData)
except:
print('数据库连接失败')
else:
jsondatar = json.dumps(jsonData, ensure_ascii=False)
# 去除首尾的中括号
return jsondatar[1:len(jsondatar) - 1]
if __name__ == '__main__':
# 调用函数
jsonData1 = TableToJson()
print(u'转换为json格式的数据:', jsonData1)

这时返回的数据类型为json,可以顺心的耍起来啦


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多