Python连接SQL Sever数据库,将查询结果按日期方式命名并保存到指定位置
导入相关模块
import pymssql
import os
import time
import pandas as pd
如果报错,未找到相关模块则按以下方式处理
Step1:
在键盘同时按住这两个键(Win+R),出现如下界面(图1)
在“打开”的一栏输入 cmd 后点击确定,
进入后台安装模块的界面(图2)
Step2:
在图2里面输入对应的安装模块语句
pip install +模块名
eg: pip install pymssql
即可完成pymssql 模块的安装,其他的模块类似,只需要修改对应的模块名即可
图1
图2
连接SQL Sever 数据库
list_new_cus=[]
server = '10.91.255.15';user = 'sa';password = 'huadongdata';
conn=pymssql.connect(server, user, password, "ByteDance",charset='utf8')
cur=conn.cursor(as_dict=True)
sql='select \'上海\' as 区域,bpm客户id,客户,所属团队,当前绑定优化姓名,首次消耗日期,增值部门,bsm部门负责人 from 增值总部数据 where 首次消耗日期>=convert(date,DATEADD(d,-day(getdate()-1),GETDATE()),111)'
cur.execute(sql)
list_new_cus = cur.fetchall()
df=pd.DataFrame(list_new_cus)
其中
list_new_cus 即为查询后的结果数据;
df则表示用dateframe的形式保存,这样是为了更容易的写入excel中保存到本地;
结果数据里的中文乱码处理
for row in list_new_cus:
row['区域']=row['区域'].encode('latin-1').decode('gbk')
1.如果结果数据中出现中文字符的乱码,将对应的列名进行编码和解码处理即可;
2.如果有多个字段出现中文乱,在以上语句的for循环中加入相同的一段语句,把列名替换即可;
例
for row in list_new_cus:
row['区域']=row['区域'].encode('latin-1').decode('gbk')
row['客户']=row['客户'].encode('latin-1').decode('gbk')
切换需要保存的文件路径
os.getcwd()#查看当前路径
os.chdir('C:\\work\\new_customer_online_yy')#切换到目标路径
其中os.chdir(‘目标路径’);
按日期方式命名文件并保存
df.to_excel(time.strftime('%Y-%m-%d',time.localtime())+' 新户上线数据'+'.xlsx')
保存后的结果截图:
这样每天的数据都能以当天的日期保存,方便后续查找和识别,同时也减少的每天手动取数的流程,大大提高工作效率。