连接数据库查询并输出Excel
每周开会前都需要整理数据,可是小编并不想花费时间去做复制粘贴的活。
正好呢公司数据库里面开会的数据都有,于是就用Python写了一个小程序,自动导出数据库的数据。话不多说,代码如下:
import pymysql
import pandas as pd
class Mysql:
def __init__(self):
# 连接数据库的参数
self.content = pymysql.Connect(
host='0.0.0.0', # mysql的主机ip
port=3306, # 端口
user='name', # 用户名
passwd='password', # 数据库密码
db='database', # 数据库名
charset='utf8', # 字符集
)
# 获得一个连接对象
self.cursor = self.content.cursor()
def query(self):
sql = '''
SELECT
`name` AS '工程名称',
qlfs AS '资质要求',
xfl AS '下浮率',
bid_time AS '开标日期',
town AS '镇区',
number AS '投标人数',
p AS '去最高最低平均价(P)',
method AS '投标方法',
bid_place AS '开标地点',
k AS 'K值',
control_price AS '招标控制价',
p_xfl AS 'P值下浮率',
yc_xfl AS '预测下浮率',
type_tender AS '类型'
FROM
bid_project
WHERE
bid_time BETWEEN '20210326'
AND '20210411'
ORDER BY
bid_time;
'''
# execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
self.cursor.execute(sql)
# fetchall(self):接收全部的返回结果行.返回一个二维tuple
# 正好将这个二维tuple转换为dataframe类型的数据
df = pd.DataFrame(self.cursor.fetchall(),columns=['工程名称','资质要求','下浮率','开标日期','镇区','投标人数','去最高最低平均价(P)','投标方法','开标地点','K值','招标控制价','P值下浮率','预测下浮率','类型'])
# 将数据输出到Excel中,调格式就不赘述了
df.to_excel('data.xlsx',index=None)
# 中断连接
def end(self):
self.cursor.close()
self.content.close()
print('over')
if __name__ == '__main__':
mysql = Mysql()
mysql.query()
mysql.end()