主要提供对导出数据临时脚本,并提供操作mysql及mongo的简单实例,仅供参考:
关于pymysql
参考:https://pypi.org/project/PyMySQL/#documentation
你的GetMysqlClient函数不需要对每个单独的查询都有连接,尽管你可以在查询之间共享连接,只要你负责游标,游标是否可以共享参考https://www.jianshu.com/p/fba075a4cfe9。
关于pymongo
参考:https://pypi.org/project/pymongo/
https://www.runoob.com/python3/python-mongodb.html
一、软件环境
1.python3.7.4
2.pip 10.0.1
二、代码实现
import pymongo
import pymysql
import xlwt # 写入Excel文件的扩展工具
# 连接mysql数据库
class GetMysqlClient:
def __init__(self):
config = {
#########mysql环境############
'host': '你的mysql数据库地址',
'port':mysql数据库端口 ,
'user': 'mysql数据库账号',
'passwd': 'mysql数据库密码',
'charset': 'utf8mb4',
'db': 'mysql数据库名称',
'cursorclass': pymysql.cursors.DictCursor # 结果以字典给出
}
self.conn = pymysql.connect(**config)
# 关闭mysql数据库连接
def closeMysql(self):
self.conn.close()
class getMonogoClient:
def __init__(self):
mgconfig = {
#########mongo环境############
'host': 'mongo地址:mongo端口',
'authDb': 'admin', # 账户级别
'user': 'mongo账户',
'passwd': 'mongo密码',
'defDb': 'demo_mongo' #你要操作的库 以demo_mongo做示例
}
mongoClient = pymongo.MongoClient("mongodb://" + mgconfig['host'])
authDb = mongoClient[mgconfig['authDb']]
authDb.authenticate(mgconfig['user'], mgconfig['passwd'])
self.demoDb = mongoClient[mgconfig['defDb']] # 指定库
# 关闭mongo数据库连接
def closeMongo(self):
self.mongoClient.close()
if __name__ == "__main__" :
# 获取mysql连接
mysql = GetMysqlClient()
con = mysql.conn
cursor = con.cursor()
# 获取mongo连接
demo_mongo= getMonogoClient()
collectionName = 'demo_record' # 操作mongo的表demo_record
validColl = demos.demoDb[collectionName] # 获取表
validCollResult = validColl.find({}) # 获取查询结果
# 结果封装数据集
resultList = []
# 表头
field = ['编号', '名称', '描述']
resultList .append(field) # 加入表头
# 处理mongo数据集结果 将单条记录封装到列表并将每个列表封装到总的结果列表中
for validData in validCollResult:
newList = [] # 单条数据结果
sql_user = """SELECT userName FROM user_info WHERE userId="""+validData['userId'] # 查询姓名
cursor.execute(sql_user)
userName = cursor.fetchone()
newList.append(validData['userId']) # 封装编号
newList.append(userName['userName']) # 封装名称
if 'detail' in validData: # 判断 detail是否存在于字典中,有返回值无则返回空串
newList.append(validData['detail'])
else:
newList.append('')
resultList .append(newList) # 单条记录加入结果集
# 操作excel写入
workbook = xlwt.Workbook() # 获取workbook
sheet = workbook.add_sheet('sheet1', cell_overwrite_ok=True) # 获取sheet cell_overwrite_ok=True 每次导出设置覆盖
# 写入表头
for field in range(0, len(resultList )):
sheet.write(0, field)
row = 1
col = 0
#写入查询结果集
for row in range(1, len(resultList ) + 1):
for col in range(0, len(newList)):
sheet.write(row, col, u'%s' % resultList [row - 1][col])
#导出excel到指定位置
workbook.save("E:/"+yourName+".xls")
#关闭连接
cursor.close()
con.close()
(本文展示的是处理过后的基本实现代码;水平有限,供交流分享,如有错误,还请指教,谢谢~~)