ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

pandas 查询mysql数据

2021-10-01 15:34:29  阅读:204  来源: 互联网

标签:repository self 查询 num tab mysql print pandas conn


import pandas as pd
import pymysql

repository = dict()
def init_repository():
tab1 = (1,'test.test_account')
tab2 = (2,'test.loan_apply')

repository[tab1[0]] = tab1
repository[tab2[0]] = tab2


return repository

class MysqlHander:
"""initiated a program to connect DB
"""

def __init__(self, host='xxxxxxx', port=xxxx, user='xxxxx', passwd='xxxxxxx', db='xxxx',
charset='utf8'):
self.host = host
self.port = port
self.user = user
self.password = passwd
self.db = db
self.charset = charset

def connect_all(self,sql):

try:
self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, password=self.password, db=self.db,
charset=self.charset)
self.conn.ping(reconnect=True)
df = pd.read_sql(sql,con=self.conn)
return df

except Exception as e:
print('failed:',e)

finally:
self.conn.close()

def connect(self,sql,chunksize=10000):
try:
print("数据提取中....")
self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, password=self.password, db=self.db,
charset=self.charset)
# self.cursor = self.conn.cursor()
self.conn.ping(reconnect=True)

self.chunks = []
reader = pd.read_sql(sql, con=self.conn,chunksize=chunksize)

for each in reader:
self.chunks.append(each)
df = pd.concat(self.chunks,axis=0)

print("数据提取完毕!")

return df


except Exception as e:
print('failed',e)

finally:
self.conn.close()


def show_table():
print("新的一天,新的工作,新的学习,加油干!")
print("常用数据表清单:")
print("--"*30)
print("%5s%10s" % ("序号","表名"))
print(".."*30)
for seq,tab in init_repository().items():
print("%5s| %-20s" % (seq,tab[1]))
print("--"*30)

def show_command():
require = int(input("请输入你需要使用的表数量:\n"))
tab_num = []
count = 0
while count < require:
cmd = int(input("请输入要使用的表名序号:\n"))
tab_num.append(cmd)
count += 1
for i in range(len(tab_num)):
if tab_num[i] not in init_repository().keys():
print("不要玩了,好不好!")
break

print(f"你需要的表名称是:{init_repository()[tab_num[i]][1]}")

tab_num[i] = init_repository()[tab_num[i]][1]

return tab_num


if __name__ == "__main__":
show_table()
tab_name = show_command()
c = MysqlHander()
namelist = init_repository()

for i in range(len(tab_name)):
script = f'select * from {tab_name[i]};'
path = tab_name[i].split(".")[1] + '.xlsx'
df = c.connect(script)
df.to_csv(path)

 

标签:repository,self,查询,num,tab,mysql,print,pandas,conn
来源: https://www.cnblogs.com/liyiyu/p/15359427.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有