仅导出包含 csv 内容的压缩文件夹

Exporting zipped folder only with csv content

1.I 我正在使用 Oracle,我的想法是使用 python 脚本将表导出为包含保存我的数据的 csv 文件的压缩文件夹。

2.Additionaly:是否可以按列将此数据保存在 csv 中。例如,我有 4 列,它们都存储在 csv 中的 1 列中。 see this image

这是我的脚本:

import os
import cx_Oracle
import csv
import zipfile

connection = cx_Oracle.connect('dbconnection')
SQL = "SELECT * FROM AIR_CONDITIONS_YEARLY_MVIEW ORDER BY TIME"

filename = "sample.csv"

cursor = connection.cursor()
cursor.execute(SQL)
with open (filename, 'r') as output:
   writer = csv.writer (output)
   writer.writerow([i[0] for i in cursor.description])
   writer.writerows(cursor.fetchall())
air_zip = zipfile.ZipFile("sample.zip", 'w')
air_zip.write(filename, compress_type=zipfile.ZIP_DEFLATED)

cursor.close()
connection.close()
air_zip.close()

我做的代码分别导出 csv 和压缩文件夹,里面有适当的 csv 文件,我只想继续导出这个压缩文件夹! sample.zip 包含预期的 sample.csv 和同时生成的 sample.csv。

存在问题列表:

  • .csv文件格式不正确(一行被视为单个记录(字符串)而不是一系列记录):

  • 代码“正在导出.csv.zip文件(我不知道 export 是什么意思,我假设 generate - 意思是在 运行 代码之后,两个文件都存在):

    • 解决这个问题的方法是删除 .csv 文件 之后 它被归档到 .zip 文件。翻译成代码意味着在当前脚本片段的末尾添加:

      os.unlink(filename)
      

作为最后的观察(如果有人想学究气的话),关闭游标和数据库的行可以移动到 with[ 之后=61=] 阻止或在 air_zip 创建之前(存档时保持打开状态没有意义)。