python - 使用 Python 将数据保存到 CSV - 将仅保存 1 行
问题描述
我有简单的 Python 脚本来将数据保存到 CSV 文件
import csv
import MySQLdb
db = MySQLdb.connect('localhost', db="", user='', passwd='')
cursor = db.cursor()
sql = "SELECT col1, col2, col3, col4, col5 FROM table"
try:
cursor.execute(sql)
with open('MyFile.csv', mode='w') as csv_file:
fieldnames = ['Col1_Name', 'Col2_Name', 'Col3_Name', 'Combined_Col']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
writer.writeheader()
results = cursor.fetchall()
for row in results:
col1 = row[0]
col2 = row[1]
col3 = row[2]
col4 = row[3]
col5 = row[4]
combinedColumns = "%s (count: %s)" % (col4, col5)
writer.writerow({'Col1_Name': col1, 'Col2_Name' : col2, 'Col3_Name': col3, 'Combined_Col': combinedColumns})
except:
print("Error: unable to fetch data")
db.close()
print("DONE!")
但它只会保存一行。
我错过了什么?
解决方案
import csv
import MySQLdb
db = MySQLdb.connect('localhost', db="", user='', passwd='')
cursor = db.cursor()
sql = "SELECT col1, col2, col3, col4, col5 FROM table"
try:
cursor.execute(sql)
with open('MyFile.csv', mode='w', newlines='') as csv_file:
fieldnames = ['Col1_Name', 'Col2_Name', 'Col3_Name', 'Combined_Col']
writer = csv.writer(csv_file)
writer.writerow(fieldnames)
results = cursor.fetchall()
for row in results:
col1 = row[0]
col2 = row[1]
col3 = row[2]
col4 = row[3]
col5 = row[4]
combinedColumns = "%s (count: %s)" % (col4, col5)
writer.writerow(row)
except:
print("Error: unable to fetch data")
db.close()
print("DONE!")
推荐阅读
- html - 为什么我使用margin时还有margin: 0; 在那个元素上
- laravel - 调度程序未运行 Laravel 5
- pandas - 从文件名导入多个 csv 时创建日期索引
- javascript - 如何在 JavaScript 中检查表格的单元格索引
- redux - 使用 react redux 恢复 Ag Grid 的列状态
- typescript - TypeScript 在函数中自动捕获数组类型变量
- heroku - Heroku 如何使用 AWS S3 凭证访问我存储桶中的图像?
- python - Python PIP 抛出错误 - ImportError: cannot import name main
- msdeploy - MSdeploy 仅适用于根目录的跳过规则
- python - 使用线程类时 Tkinter 应用程序冻结