python - 如何将精确格式的表格从 teradata 导出到 excel?
问题描述
对于工作中的项目,我需要从 teradata 导出到 excel 一个 sql 请求。
到目前为止,我设法将几个请求完全导出到我的 excel 文件中,但输出格式并不完全是我想要的。实际上,输出不尊重原始表,只是逐行给出连接,如:A 1('000000000DUM', 'RRFOR', '', '', 'NOTE_CONTREP', '20.00') 我想要
A1:000000000DUM B1:RRFOR C1:'' D1:'' E1:NOTE_CONTREP F1:20.00
这是我的代码:
def KPI_MAKER(instid):
conn=pyodbc.connect('DRIVER={Teradata};DBCNAME=FTGPRDTD;UID='+str('L291506')+';PWD='+str('Pilote06!')+';QUIETMODE=YES;')
Agg=str("sel code_gen1,code_gen2,cd_prd_cpta,lieu_stkph_cd,don_source_cd,incorrect_value from DB_FTG_SRS_DATALAB.mdc_ctrl_anomalie where rg_no = 'RGC-TIE-012'")
cursor = conn.cursor()
cursor.execute(Agg)
Agg_output = cursor.fetchall()
conn.close
df = pd.DataFrame(Agg_output)
writer = pd.ExcelWriter('KPI_FORTIS_13082019.xlsx', engine='xlsxwriter')
df.to_excel(writer, index=False, sheet_name='POC_output') # sheet 0
writer.save()
print('done')
解决方案
问题是该fetchall
方法返回行对象列表而不是元组列表。添加从行到元组的 Agg_output 转换将允许该DataFrame
方法执行您想要的操作。但是,为什么要打扰光标呢?只需让 pandas 直接从查询中创建数据框:
df = pd.read_sql(Agg,conn)
推荐阅读
- listview - UWP 和 WASM 之间的 ListView 行为不同
- javascript - React:带有道具值的默认初始状态
- reactjs - 当我从“firebase”导入 firebase 时,出现错误无法解决 firebase
- bert-language-model - 函数 tf.keras.utils.get_file() 可以从平面本地文本文件而不是 URL 中提取吗?
- python - python中的自动柜员机问题
- flutter - Flutter Firebase auth 说 [okhttp]:check permission begin, [okhttp]:not MMS and [okhttp]:not Email
- python - sklearn_porter:ImportError:无法导入名称“Porter”
- c# - 如何让 AllowDBNull 为 GUID 工作?
- javascript - 为什么我的新 if 语句会破坏我的功能?
- c++ - `&&` 和 `||` 运算符重载与短路有关的用例