【发布时间】:2022-06-10 18:45:36
【问题描述】:
我有这个 python 程序,它用于在许多服务器上获取 sql 查询结果,我想做的是将每个结果堆叠到一个 excel 上,但是当我使用 pandas.concat([],axis=0) 时,下一个数据帧会跳转到下一个索引列而不是堆叠。我使用了 ignore_index=True 但数据框不会忽略索引
from ast import Not
from cmath import inf
from multiprocessing import connection
from operator import index
from sqlite3 import Cursor
from unittest.result import failfast
import mysql.connector
from mysql.connector import errorcode
from numpy import save
import pandas as pd
from requests import NullHandler
from sqlalchemy import false
#importing Queries
from Queries import *
#Location Ip's
from locations import locs
from env import *
startDate='2022-05-01'
endDate='2022-05-15'
from lib import fileChecker,logwriter
from cmath import inf
from multiprocessing import connection
from operator import index
from sqlite3 import Cursor
from unittest.result import failfast
import mysql.connector
from mysql.connector import errorcode
import pandas as pd
from sqlalchemy import false
#importing Queries
from Queries import *
#Location Ip's
from locations import locs
from env import *
startDate='2022-05-01'
endDate='2022-05-15'
from lib import fileChecker,logwriter
def executor(QUERY):
alldf = None
for type,info in locs.items():
fileChecker(type)
for ip,locName in info.items():
try:
cnx = mysql.connector.connect(user=usr, password=passwd,host=ip, database=db)
if cnx.is_connected():
print("Connection Succesfull to {}".format(locName))
logwriter(type,ip,locName,True)
location = cnx.cursor(buffered=True)
location.execute("SELECT loccod FROM docparameters d limit 1")
loc = location.fetchone()[0]
cursor = cnx.cursor()
cursor.execute(QUERY)
df = pd.DataFrame(cursor.fetchall())
if alldf is not None:
if not df.empty:
alldf = pd.concat([alldf,df],ignore_index=True,axis=0)
else:
alldf = df
print(df)
field_names = [ i[0] for i in cursor.description]
print(field_names)
xlswriter = pd.ExcelWriter('{}/{}.xls'.format(type,loc),engine='openpyxl')
if not df.empty:
df.columns = field_names
df.to_excel(xlswriter,index=false)
xlswriter.save()
else:
cnx.close()
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something wrong with your username or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("DATABASE does not exist")
else:
print(err)
print("Connectin Failed to %s"%(loc))
logwriter(type,ip,locName,False)
else:
cnx.close()
return alldf
def saveToExcel(query,filename):
xlswriter = pd.ExcelWriter("%s.xls"%(filename),engine='openpyxl')
queryDatas = executor(query)
print(queryDatas)
export = queryDatas
export.to_excel(xlswriter)
xlswriter.save()
print("succes savetoExcel")
saveToExcel('desc rms_itmmaster;','peoples')
【问题讨论】:
-
将代码减少到最低限度以显示问题。 mysql 对这个问题没有用,也没有写入 xls,也没有所有的导入。将其简化为 Pandas 问题;不要让我们涉足您的代码。